首页 > 自考资讯 > 高考百科

微服务最全详解(万字图文总结)(微服务百科)

小条 2024-10-06

ce68ed0b5a7a409484920cffff2a52e9~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=ayY1veybXvrU40LA4z7Tn2FWpeM%3D微服务是大规模架构的必备技能,也是各大厂商考察的重点。下面我们将详细讲解微服务@mikechen

微服务

微服务是一种架构风格,鼓励将大型软件应用程序划分为多个较小的自治服务单元。

如下图:

1242b329eaa845339495e27c34a77849~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=Q2XAWrmG4sEUr50FvIzxx7XIy6g%3D 微服务架构将应用程序划分为多个较小的自治服务单元,每个服务单元专注于实现特定的业务功能。

此外,它们拥有自己的数据库和代码库,并通过轻量级通信机制(例如HTTP)进行交互。

这种松耦合使开发团队在开发、部署和维护方面具有更大的灵活性,使系统更具可维护性和可扩展性。

目前国内企业使用的主要微服务框架有Spring Cloud、Spring Cloud Ali、ServiceMesh等。详细信息稍后会解释@mikechen

Spring Cloud微服务

Spring Cloud是一个基于Spring Boot的微服务架构开发集合,提供了服务发现、负载均衡、断路器、配置管理等一系列组件。

如下图:

2476600108b74d6cae54c821084e61ed~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=wT4FEHZCo1rYRbEB4MnELtBz%2BOQ%3D1。服务注册和发现(Eureka)

Spring Cloud Eureka提供服务注册和发现功能,允许您动态注册和发现微服务。

如下图:

4102d2227dcc4c4bb4282807d27dd268~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=S004%2Bu1iD2IGwbiy4XuL4uzQDSo%3D 其主要特点是:

服务注册:当微服务启动时,它会向Eureka服务器注册其信息(服务名称、IP地址、端口号等)。服务发现:客户端通过Eureka服务器找到自己需要调用的微服务的地址,从而实现服务之间的通信。服务心跳检测:Eureka服务器定期检查注册的微服务是否仍处于健康状态。 2. Zuul服务网关

Spring Cloud Zuul提供了微服务网关功能,可以路由、过滤和转发外部请求。

如下图:

6c2e993c293a4d8282e4ce3d58334798~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=CYFnfVqMqXKcxmfAO%2BrjBWMl4E4%3D 主要特点是:

路由转发:Zuul充当反向代理,将外部请求转发到微服务并将微服务响应返回给客户端。过滤器:Zuul 的过滤器可以在请求到达微服务或响应返回给客户端之前执行预处理或后处理,例如身份验证、日志记录和性能监控。负载均衡:Zuul还可以与Eureka等注册中心合作实现负载均衡,从而提高系统可用性和性能。 3.历史断路器

Spring Cloud Hystrix提供了断路器模式的实现。如果依赖的服务无法保护系统的稳定性,这将有助于系统降级或崩溃。

4. Ribbon负载平衡

Spring Cloud Ribbon是一个客户端负载均衡器,可以在微服务之间进行负载均衡,提高系统可用性和性能。

625374245d704c40b2b1b76747e151b3~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=dUR6csfD3%2BxKNyRKkGjtdyCO0Co%3DRibbon可以进行负载均衡,按照一定的规则(如轮询、加权、随机、最少连接等算法)为一次调用选择合适的微服务实例。

5. 如何伪造远程调用

Feign 是一个声明式HTTP 客户端,用于简化微服务之间的远程调用。

Feign 允许开发人员创建接口并定义如何调用服务,而无需担心特定HTTP 请求和响应的细节。

Dubbo微服务

Dubbo是阿里巴巴开发并开源的高性能分布式服务框架,提供远程过程调用(RPC)远程调用功能。

如下图:

0f2f35fbe3e64d8bb3aae41b9ff3a7b1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=%2F7y1Dcn4XXWxAd9ijR%2BGSFY9q1U%3D主要包括以下组件:

1. 注册中心(Registry)

注册中心是Dubbo上用于注册和发现服务的组件,负责维护服务提供者的地址列表,并向服务消费者提供可用服务的列表。

Dubbo支持ZooKeeper、Consul、Nacos等多种注册中心。开发者可以根据自己的需求选择合适的注册中心。

2. 消费者

服务消费者是Dubbo中另一个重要的角色。负责从注册中心获取服务提供商地址并发起远程调用请求。

3. 制作人

Service Provider是Dubbo中的重要角色,负责提供具体的服务实现并注册到注册中心。

4. 监控

监控中心用于收集并展示Dubbo服务的执行状态和性能指标,如服务调用时间、成功率、响应时间等。

Spring Cloud Alibaba微服务

Spring Cloud阿里巴巴是一套结合了Spring Cloud和阿里巴巴生态的微服务解决方案,集成了阿里巴巴的一些分布式解决方案,提供了更多的微服务开发支持。

如下图:

46b8c5782bf34f0bbac64e26bfb13e98~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=1f9P0t9YhAaKiu8cxaIPjhj5%2Bbg%3D1.哨兵流量控制

Sentinel是阿里巴巴开发的开源流量控制组件,用于保护微服务免受流量过载和故障的影响。

ac604b0f3365492bb86e5693df8e6208~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=gFALoTuQjCOxrvYRXKcomJN42%2BQ%3D Sentinel 可以通过流量控制、断路器降级和系统负载保护等功能来保护微服务免受流量过载和故障的影响。

此外,Sentinel还提供实时监控和统计功能,让您可以实时查看微服务执行状态和性能指标,帮助开发人员及时发现并解决问题。

2.Nacos服务配置

Nacos是阿里巴巴开源的服务发现和配置管理平台,作为Spring Cloud应用程序的注册和配置中心。

f25ada111035434fb2739030070a0241~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=EqejdKyA%2F3L6RWrCeQaRYwcCS%2Bk%3DNacos提供服务注册和发现功能,允许微服务动态注册和发现彼此。

3.RocketMQ消息中间件

RocketMQ是阿里巴巴开源的一款高性能、低延迟的分布式消息中间件。

RocketMQ提供可靠的消息传递机制,支持消息持久存储和消息重试机制,保证消息的可靠性和一致性。

此外,RocketMQ支持水平扩展,允许您通过添加消息队列和消息消费者来提高系统吞吐量和可用性。

4.销钉远程通讯

Dubbo是阿里巴巴开源的高性能分布式服务框架,用于实现微服务之间的远程通信。

1dc2040c68bf4cefaf2368e630b0b38b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=vzIxFukJHoc1CvLbiYYl7zIzlzs%3D5。 Seata 分布式事务

Seata是阿里巴巴开发的开源分布式事务解决方案,用于在分布式系统中实现分布式事务管理。

Seata 主要由三个重要的组成角色组成:

96eb99fb7f074f56b3c613ba9c30f16c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=YP5pINfNz6ZvwqrBrvF0sJJyF%2B8%3D1,交易协调员(TC,交易协调员):

负责协调和管理世界事务,管理分支机构交易的登记、执行和提交。管理事务日志以进行事务恢复和回滚。 2.资源管理器(RM,资源管理器)

参与全局事务的执行,负责管理分支事务,对每个分支事务相关的资源进行管理和控制,如锁定、释放资源等。

它还记录事务操作日志,以便事务恢复和回滚。

3.交易管理器(TM,Transaction Manager)

接收客户端的交易请求,创建和管理全局交易,协调TC和RM工作,保证交易执行和状态同步。

此外,它还提供了一系列分布式事务解决方案,包括原子事务、分布式事务、补偿事务等,满足各种场景下分布式事务的需求。

Service Mesh微服务

服务网格主要包括服务和网格,被称为下一代微服务框架。

如下图:

60497cdd49de41b3b922a0738f5661a2~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=oEwycZHdnFkXqGkwXdysZ2rQYEA%3D 服务网格(服务网格)。与上面的网络类似,我们描述服务之间的依赖模式。

Service Mesh 的核心组件是Sidecar 代理。它是一个轻量级的网络代理,独立运行并与每个微服务实例一起部署。

Sidecar也称为sidecar模式。之所以如此命名,是因为它类似于附在摩托车上的边车,如下图所示。

b3c59ee74f884d87a294b277f1afebbc~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=zzqhP2p2lgQDiSDtQw4UO8HVyJQ%3D Sidecar代理负责处理微服务实例之间的所有网络通信,并与控制平面通信以实现服务发现、负载均衡、流量管理和安全等功能。

Sidecar模式的优点是服务之间的通信逻辑可以从应用程序中分离出来,使得应用程序本身更加简洁和纯粹。

同时,Sidecar代理容器可以独立管理和维护,不会影响应用程序的开发和部署过程。

本文是Mikechen 30万+字原创文章《阿里架构师进阶专题合集》的一部分。

45cdb08c707c4cf7a13a76fe2f5f8190~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728796665&x-signature=sf2P4BbdjgVpY2gdNU4mRw1Xr14%3D

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢