专业的编程技术博客社区

网站首页 > 博客文章 正文

微服务框架最全详解(图文全面总结)

baijin 2024-10-22 09:49:33 博客文章 8 ℃ 0 评论

大家好,我是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万字《阿里架构师进阶专题合集》里面。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表