谈谈微服务的常用组件

由于微服务给系统开发带来了一些问题和挑战,如服务调用的复杂性、分布式事务的处理、服务的动态管理等,为了更好地解决这些问题和挑战,各种微服务治理的组件应运而生,充当微服务架构的基石和支撑,常用组件如下表:

接下里,对微服务的各个组件和常见实现做一个简单通俗的解释:

1.注册中心:用于服务的注册与发现,管理微服务的地址信息,常见的实现包括:

(1)Spring Cloud Netflix: Eureka、Consul;

(2)Spring Cloud Alibaba: Nacos。

2.配置中心:用于集中管理微服务的配置信息,可以动态修改配置而不需要重启服务(配置中心不是必须项,但是一般标准的微服务架构都用用到),常见的实现包括:

(1)Spring Cloud Netflix: Spring Cloud Config;

(2)Spring Cloud Alibaba: Nacos Config。

3.远程调用:用于在不同的微服务之间进行通信和协作,常见的实现保包括:

(1)RESTfulAPl:如RestTemplate(用的比较少,因为需要指定具体的微服务名和IP端口)、Feign;

(2)RPC(远程过程调用):如Dubbo、gRPC。

4.API网关:作为微服务架构的入口,统一暴露服务,并提供路由、负载均衡、安全认证等功能。常见的实现包括:

(1)Spring Cloud Netflix:Zuul、Gateway;

(2)Spring Cloud Alibaba:Gateway、Apisix(用的比较少)等。

5.分布式事务:保证跨多个微服务的一致性和原子性操作(刚开始的微服务架构中,不一定要这用这个组件,因为分布式事务通常会多一个服务出来,会提升服务器成本,所以通常在保证业务不出错的情况下,也用不到分布式事务,它一般在一致性要求比较的高的架构中需要用到),常见的实现包括:

Spring Cloud Alibaba: Seata

6.熔断器:用于防止微服务之间的故障扩散,提高系统的容错能力(在高并发的项目中,某一个服务出来问题,如果不机制中断,比如A服务访问B服务,B服务访问C服务,如果C服务出问题,就可能导致所有的线程都堆积在B服务,有可能就会导致B服务不可用,从而导致怎么个系统都崩溃,也就是常说的服务雪崩),常见的实现包括:

(1)Spring Cloud Netflix:Hystrix;

(2)Spring Cloud Alibaba::Sentinel、Resilience4j(用的比较少)。

7.限流和降级:用于防止微服务过载,对请求进行限制和降级处理(一般也是高并发项目才会用到;降级就是比如A调用B,B调用C,当C不可用的时候,我们需要另一个方案防止系统出错;限流就是在高并发请求的情况下来限制洪峰流量,在服务器扛不住的情况下作为一种兜底手段),常见的实现包括:

(1)Spring Cloud Netflix: Hystrix;

(2)Spring Cloud Alibaba:Sentine。

8.分布式追踪和监控:用于跟踪和监控微服务的请求流程和性能指标(业务的请求可能涉及到很多服务组成的一条链路,此时需要定位到是哪个服务出现的错误,定位就非常难),常见的实现包括:

(1)Spring Cloud Netflix:Spring Cloud Sleuth + Zipkin;

(2)Spring Cloud Alibaba: SkyWalking、Sentinel Dashboard。

相关推荐
舒一笑4 小时前
用几十行代码搞定 Chat 接口透明转发:跨环境轻量级网关实战
后端·程序员·架构
狼爷5 小时前
短视频播放量(Views)计数系统实现方案:高并发、不丢数的工业级实践
后端·架构
布吉岛的石头9 小时前
微服务网关统一鉴权、限流、日志实战
java·spring·微服务
Dabei10 小时前
Android 副屏(Virtual Display)创建与悬浮窗画中画显示实战
前端·架构
程序员老邢10 小时前
【产品底稿 12】工程架构最终定型:完整模块拆分、分包规范、层级依赖与开发规约全清单
微服务·架构·springboot·多模块·技术债务
万事大吉CC11 小时前
【1】Django 基础:MTV 架构与核心组件
数据库·架构·django
Reart11 小时前
从0解构tinyWeb项目--(Day:10)
前端·后端·架构
Java后端的Ai之路11 小时前
大模型数据飞轮核心技术一篇讲透:原理、架构、企业级案例与2026最全实践指南
人工智能·python·架构·数据飞轮
测试员周周11 小时前
【AI测试功能3】AI功能测试的三层架构:单元测试 → 集成测试 → E2E测试——AI系统测试金字塔实战指南
开发语言·人工智能·python·功能测试·架构·单元测试·集成测试
超梦dasgg12 小时前
智慧充电系统订单服务Java 实现方案
java·开发语言·微服务