网站首页 > 博客文章 正文
大家好,我是mikechen。
微服务框架主要有Spring Cloud、Spring Cloud Alibaba、ServiceMesh等,下面我会全面详解微服务框架@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Spring Cloud微服务框架
Spring Cloud 是一个基于 Spring Boot 的微服务架构开发工具,它提供了一系列的工具和组件,使得开发者能够更容易地构建、部署和管理分布式系统中的微服务。
SpringCloud的整体架构,如下图所示:
1.Eureka注册中心
Eureka 是一个服务注册和发现的组件,它允许微服务在注册时提供服务的信息,并在需要调用其他服务时进行发现。
如下图所示:
上图简要描述了Eureka的基本架构,由如下角色组成:
1.Eureka Server
Eureka Server 是服务注册中心,用于集中管理所有微服务的注册与发现。
可以有多个 Eureka Server 实例,它们之间通过复制来实现高可用和负载均衡。
2.Eureka Consumer
Eureka Consumer是微服务的注册客户端,用于向 Eureka Server 注册自己的信息(服务名、IP 地址、端口号等)。
Eureka Consumer定期向 Eureka Server 发送心跳以保持注册信息的有效性。
3.服务注册
微服务启动时,Eureka Client 将自身的信息注册到 Eureka Server 上,包括服务名、IP 地址、端口号等。
Eureka Server 维护了一个服务注册表,记录了所有注册的服务实例信息。
4.服务发现
微服务通过 Eureka Server 进行服务发现,获取其他微服务的实例信息。
Eureka Consumer通过查询 Eureka Server 上的注册表,得知其他服务的位置信息,从而实现服务之间的通信。
2.Zuul 服务网关
Zuul主要用于微服务架构中的路由、过滤、负载均衡等功能,充当了微服务系统的入口。
Zuul 类似我们小区的保安,用于保护基本的安全等的作用。
如下图所示:
使用 Zuul,开发者可以将微服务的访问进行统一管理,实现更好的路由、过滤、负载均衡等功能。
3.Hystrix断路器
Hystrix 实现了熔断器模式,当一定时间内失败的请求达到一定阈值时,Hystrix 将断开对该服务的请求,防止服务的连锁故障。
如下图所示:
Hystrix 熔断器有三个状态:关闭(Closed)、半开(Half-Open)、打开(Open)。
- 在关闭状态下,所有请求都正常执行;
- 在打开状态下,所有请求都会被熔断,直接进入降级逻辑;
- 半开状态用于试探性地允许一部分请求通过,以检测依赖服务是否已经恢复。
4.Ribbon负载均衡
Ribbon 的主要作用:是在微服务架构中,提供客户端负载均衡的能力。
如下图所示:
比如:当某个服务实例出现故障或不可用时,Ribbon 能够自动切换到其他可用的服务实例,确保系统的健壮性。
除此之外,Ribbon 还提供了多种负载均衡策略,如:轮询、随机、权重等,以实现请求的分发到多个服务实例。
开发者可以根据具体的需求选择适当的负载均衡策略,也可以通过自定义规则来满足特定场景的需求。
5.Feign远程调用方式
Feign 是一个声明式的 HTTP 客户端工具,它是 Spring Cloud 生态系统的一部分,用于简化微服务之间的服务调用。
Feign 提供了一种简洁、优雅的方式来定义和调用微服务之间的接口,减少了开发者编写冗长的 HTTP 客户端代码的负担。
如下图所示:
Feign 支持多种 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,通过不同的注解来实现。
Dubbo微服务框架
Dubbo 是一种高性能的、基于 Java 的开源微服务框架,它由阿里巴巴公司提供。
Dubbo主要包含如下几个核心组件:
1.提供者(Provider)
提供者是实际提供服务的服务端应用,Dubbo 通过提供者将服务注册到服务注册中心,并等待消费者的调用。
2.消费者(Consumer)
消费者是服务的调用方,通过服务注册中心获取服务提供者的地址,并发起远程调用。
3.注册中心(Registry)
注册中心用于管理服务的注册和发现,Dubbo 支持多种注册中心,如 ZooKeeper等。
4.监控中心(Monitor)
监控中心用于监控和统计服务的调用情况、性能指标等,比如:Dubbo Admin。
5.协议(Protocol)
Dubbo 支持多种远程调用协议,包括 :Dubbo 协议、HTTP 协议、RMI 协议等。
Dubbo 提供了一套完整的服务治理解决方案,包括服务注册与发现、负载均衡、远程调用、容错处理等功能。
Spring Cloud Alibaba微服框架
Spring Cloud Alibaba是阿里研发的一套微服务架构的落地技术方案,它整合了 Spring Cloud 和 Alibaba 的一系列中间件,提供了一套完整的微服务解决方案。
Spring Cloud Alibaba体系,包含如下图所示:
1.Sentinel流量控制
Sentinel 用于进行流量控制、熔断降级等操作,保护微服务不受恶意请求或者异常情况的影响。
如下图所示:
2.Nacos服务配置
Nacos 提供了一套完整的解决方案,旨在解决微服务架构中服务注册与发现、配置管理等核心问题。
如下图所示:
Nacos 作为注册中心,用于管理微服务的注册与发现,是SpringCloudAlibaba架构中最重要的组件。
3.RocketMQ消息中间件
RocketMQ 旨在为大规模分布式系统提供高性能、高可靠性、可伸缩性的消息通信服务。
RocketMQ 被设计为高吞吐、低延迟的消息中间件,适用于需要高性能消息传递的场景。
主要包含:
- Producer:Producer 是消息的生产者,负责产生并发送消息到 RocketMQ Broker。
- Consumer:Consumer 是消息的消费者,负责订阅并处理 Broker 上的消息。
- Broker:Broker 是 RocketMQ 的消息存储服务器,负责存储和传递消息。
- Topic:Topic 是消息的分类标签,Producer 发送消息时选择一个 Topic,而 Consumer 订阅一个或多个 Topic。
4.Dubbo远程通信
Dubbo 提供了一套完整的分布式服务治理解决方案,包括服务注册与发现、负载均衡、远程调用、容错处理等功能。
5.Seata分布式事务
Seata 提供了分布式事务的协调服务和事务处理框架,帮助开发者解决分布式事务的一致性问题。
Seata事务管理中有三个重要的组件角色:
1.TC(Transaction Coordinator)
TC 是 Seata 中的事务协调者,负责全局事务的协调和控制。
2.TM(Transaction Manager)
TM 是 Seata 中的事务管理器,负责全局事务的启动、提交和回滚。
3.RM(Resource Manager)
RM 是 Seata 中的资源管理器,负责管理分支事务的生命周期,与本地事务存储交互。
Service Mesh微服务框架
Service Mesh 是一种用于处理微服务架构中,服务间通信的新型架构模式。
Service Mesh ,可以说是目前下一代微服务架构。
如下图所示:
Service(服务)和Mesh(网格),它描述了服务间的依赖形态,就像下面这张网一样。
Service Mesh 通常采用 Sidecar 模式,通过在每个服务实例旁边部署一个 Sidecar 代理来实现对通信的控制。
如下图所示:
Sidecar 是一种用于处理服务实例通信的轻量级代理,它附属在每个微服务实例旁边,负责管理和控制服务间的通信。
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
- 上一篇: 微服务技术架构图(微服务技术架构图解)
- 下一篇: 微服务部署架构最全详解(4大主流部署架构)
猜你喜欢
- 2024-10-22 微服务架构-从概念模型到知识体系化
- 2024-10-22 深度解析微服务架构:优缺点、挑战及应对策略
- 2024-10-22 微服务架构一文详解,微服务其实真的不难
- 2024-10-22 一张图秒懂微服务网络架构(一文详解微服务架构)
- 2024-10-22 【云端秘籍】微服务架构:让应用更灵活、更高效!
- 2024-10-22 一文了解微服务架构(微服务架构介绍)
- 2024-10-22 微服务架构(前端微服务架构)
- 2024-10-22 深入解析微服务架构:原理、实现及挑战
- 2024-10-22 一张图看懂微服务架构路线(微服务架构深度解析 原理、实践与进阶)
- 2024-10-22 《微服务架构设计模式》读书笔记——服务的拆分策略
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)