了解微服务技术栈

news2024/7/4 4:43:46

        在了解微服务技术栈之前,我们先通过图片去了解微服务技术的类别。

微服务技术体系

技术栈模块图

微服务技术对比

服务框架

        用JAVA技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。

        Spring Cloud是在Spring基础上构建的,它后面有2大公司支撑,Pivotal和Netflix的技术支持。它的核心就是Netflix贡献的源码,目前可以认为是构建 Java 微服务的一个社区标准。

        Dubbo 是阿里多年构建生产级分布式微服务的技术结晶,服务治理能力非常丰富,在国内技术社区具有很大影响力,Dubbo 本质上是一套基于 Java 的 RPC 框架。

此外还有:

        钉钉的Dubbox,Dubbox在Dubbo的基础上拓展了RESTful的接口暴露能力。

        新浪微博的Motan,功能和Dubbo类似,可以认为是一个轻量裁剪版的Dubbo。

        谷歌的gPRC,是谷歌近年新推出的RPC框架,基于protobuf的强契约编程模型,能自动生成各种语言客户端,且保证互操作。

服务网关

        如果采用Spring Cloud体系,则可以选择Zuul网关,Zuul在Netflix经过大规模生产验证,支持灵活的动态过滤器脚本机制。

此外还有:

        Spring Cloud Gateway,Spring Cloud新推出的网关框架;

        基于 Nginx/OpenResty 的 API 网关 Kong,因为采用 Nginx 内核,Kong 的异步性能较强,另外基于 lua 的插件机制比较灵活,社区插件也比较丰富。

服务治理

  • 服务注册和发现:Netflix Eureka,支持跨数据中心,除此之外,还有Consul(天然支持跨数据中心,还支持 KV 模型存储和灵活健康检查能力),Zookeeper等
  • 断路器:Hystrix,Netflix 的Hystrix把熔断、隔离、限流和降级等能力封装成组件,任何依赖调用(数据库,服务,缓存)都可以封装在Hystrix Command之内,封装后自动具备容错能力。除此之外,Netflix的Hystri停更后,SpringCloud家族推荐Resilience4j,另外阿里也推出了Sentinel。
  • 调用端负载均衡:Ribbon
  • REST客户端:Feign
  • 分布式事务:阿里开源的Seata,个人开源 TX-LCN
  • 消息队列:Spring Cloud的Spring Cloud Bus和Spring Cloud Stream,阿里开源的RocketMQ,Linkedin开源的Kafka

配置中心

  • Spring Cloud 自带 Spring Cloud Config
  • 携程开源的Apollo,在携程经过生产级验证,具备高可用,配置实时生效(推拉结合),配置审计和版本化,多环境多集群支持等生产级特性,建议中大规模需要对配置集中进行治理的企业采用。
  • 阿里开源的Nacos,Nacos集注册发现和配置中心于一体。

服务监控

        主要包括日志监控,调用链监控,Metrics 监控,健康检查和告警通知等产品。

        ELK 目前可以认为是日志监控的标配

        调用链监控目前社区主流是点评 CAT,Twitter开源的Zipkin,Naver开源的Pinpoint,还有国内开源的Skywalking等

其他服务

  • 分布式缓存:Redis
  • 分布式数据库访问层:MyCat
  • 任务调度系统:徐雪里开源的 xxl-job,阿里开源的Alibaba Cloud SchedulerX

持续集成

        持续交付流水线(CD Pipeline)是微服务发布重要环节,包括基于Docker的镜像治理、基于Kubernetes的集群资源调度,以及资源治理和发布平台等。

下图为可供参考的流水线模型:

        

总结

        微服务是一个庞大的架构体系,每个企业的具体上下文(业务场景,团队组织,技术架构等)各不相同,所以技术选型存在多种多样,没有最好的技术栈,只有相对较合适的技术栈。而技术栈仅是微服务建设的一小部分工作,产品落地才是建设目的,而且系统落地后还有大量集成、定制、治理、运维和推广等工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习之朴素贝叶斯二、情感分析实践

目录标题 一、什么是朴素贝叶斯?二、利用朴素贝叶斯进行情感分析1. 数据类别说明2. 什么是词袋模型3. 数据展示4. 利用词袋模型进行词表构建5. 到了这一步,我们的前期工作都已经准备好了,有了样本的向量化数据,开始进行 朴素贝叶斯…

2023年北京.NET线下技术沙龙来了!大咖分享,还有精品好礼等你

MASA技术团队来北京啦! 为了与北京的.NET开发者们更深入的交流学习,我们将在北京市举办一场.NET线下技术沙龙。同时也是希望通过举办这样的线下沙龙,让更多的.NET开发者了解我们,加入.NET开源技术生态,向更多的.NET开…

SpringCloud-服务间通信OpenFeignRibbon

服务间通信&OpenFeign&Ribbon 一、服务间通信1.创建两个服务并注册到服务中心1.1.服务添加相关依赖1.2.编写配置文件application.yml1.3.入口类加上注解启动Eureka Client 2.Product服务中提供调用方法3.User服务中使用RestTemplate调用 二、负载均衡及Ribbon组件1.负载…

《三》包管理工具

包管理工具 npm: npm:Node Package Manager,Node 包管理器,目前已经不仅仅作为 Node 的包管理工具,也作为前端的包管理工具来管理包。 npm 管理的包是存放在一个名为 registry 的仓库中的,发布一个包时是…

AI歌手——超简单一键运用ACE Studio来训练模拟真人唱歌

目录 1.安装ACE Studio 2.打开ACE Studio 3.导入midi或音频 4.调试音频 5.调整人物音色音高 6.调整歌词 7.自动添加呼吸​编辑 8.成品演示(周杰伦の稻香——鲤阮) 1.安装ACE Studio 安装地址 ACE Studio | Create Limitless Vocals with AI (t…

如何用AI画56个民族的女孩!

大家好,我是菜鸟哥! 目前在带领600多个小伙伴一起玩AI!Chatgpt现在是最火最出圈的产品,而一旦文字和图像,声音,视频结合可以演化出很多很多的需求。前面我们公众号已经分享了很多很多关于chatgpt的使用和技…

大势智慧软硬件技术答疑第二期

1. 编辑模型视图为什么是空的呢?工程这里也选了obj数据位置。 答:CtrlT选择下瓦块就可以,或者点这个图标。 2. 支持编辑DSM 生成正射吗? 答:重建大师,模方,和dasview均支持直接生产正射和DSM&a…

idea-properties文件编码为iso-8859-1修改为utf-8

一、现状 idea中properties文件编码为iso-8859-1并且为灰色不可修改 二、修改成utf-8 command,打开preferences 如下图操作即可

机器学习——logit正则化

机器学习——logit正则化 文章目录 机器学习——logit正则化[toc]1 logit模型正则化2 logit回归求解器2.1 ℓ 1 \ell_1 ℓ1​和 ℓ 2 \ell_2 ℓ2​正则化2.2 e l a s t i c − n e t elastic-net elastic−net正则化 1 logit模型正则化 logit模型能实现分类,识别…

励志长篇小说《周兴和》书连载之四 屋漏偏遇连天雨

屋漏偏遇连天雨 周兴和的母亲就死于那个寒冷的冬天。 她死时是1969年农历正月十八的早晨。 这时,周兴和的大女儿刚出生40多天。 母亲的病其实已经拖了好长时间了。刚开始她还能起床给一家人做饭,干点轻微的家务事。渐渐地,她开始不能吞食东…

如何成为年薪70万的全栈开发和测试人员?必备技能一网打尽

目录 引言 什么是全栈开发人员? 为什么需要全栈开发人员? 成为Full Stack Developer所需的技能组合 什么是软件栈? LAMP栈 MERN是基于JavaScript的技术的集合: Full Stack Developer的职责 技术的准备 一、测试基础 二…

面试官常问的音视频技术点!

一、前言: 今天继续给大家分享最近星球上的星友音视频面试题目,希望对大家有用! 下面是具体面试问的问题: 二、面试题目: 1、请说下H264的两种形态: Annex B格式:这种格式常用于网络流媒体传输…

yum源下载,及安装本地rpm包

yum源下载: yumdownloader rpm包名 如 :要下载 关于 pcre2-devel的包, 发现需要 依赖: Downloading packages: (1/4): pcre2-10.23-2.el7.x86_64.rpm | 20…

架构师备战(一)-软考如何备考

我要备战的是系统架构设计师,那么软考有哪些可供我们选择的考试呢。 1、软考能考哪些 我们知道,软考的体系结构有很多,比如初级的程序员,中级的软件设计师,高级的系统架构师等。具体有哪些,大概有如下这些…

华硕ROG STRIX B760-G GAMING WIFI小吹雪D5评测:最能超的小主板 轻松提升14%

一、前言:华硕推出新版B760-G小吹雪主板 加入DDR5内存支持 和以往的每一代规格一样,DDR5内存上市初期的表现并不如人意,频率是高了,但延迟也高了,导致性能提升一般般。 经过一两年的演进,DDR5内存的时序延迟…

港联证券|熊市牛市出现的原因?出现时应该怎么办?

熊市和牛市是股市专业术语,都指的是股市的一种形式。那么熊市牛市出现的原因?出现时应该怎么办?下面就由港联证券为大家进行分析: 熊市牛市出现的原因? 熊市出现原因: 1、市场利空消息出现 比如公司业绩…

【Spring框架全系列】SpringBoot配置日志文件

🍧🍧哈喽,大家好,我是小浪。那么上篇博客我们学习了SpringBoot配置文件的相关操作,本篇博客我们将学习一个新的知识点,SpringBoot日志文件。🖥🖥 📲目录 一、日志是什么…

Git概念介绍,常用命令与工作流程整理 配图

首先附一张Git的cheat sheet 作为开始,方便查阅:https://education.github.com/git-cheat-sheet-education.pdf Git简介 Git大家肯定都不陌生了,象征性地再介绍一下:Git是一个版本控制系统,换句话说,它可…

TypeError: makedirs() got an unexpected keyword argument ‘exist_ok‘

背景: 自己在使用pyinstaller打包一个基于pyqt5的gan网络手写数字生成的项目的时候,打包过程中出现这个错误导致打包失败。 图示: 问题分析: 复制这个错误在百度上搜看到很多答案说是python版本的原因。2.7版本的python不支持…

Redis如何存储一个Java对象【内涵案例】

目录 Java原生序列化示例 GSON示例 使用fastjson存储Java对象到Redis时 Redis并不能直接存储Java对象,需要进行序列化或者转换成字符串等格式才可以进行存储。以下介绍两种常见的将Java对象存储到Redis的方案。 对象序列化,存储二进制数据 将对象进…