谈谈微服务的常用组件

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

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

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。

相关推荐
ai小鬼头1 小时前
Ollama+OpenWeb最新版0.42+0.3.35一键安装教程,轻松搞定AI模型部署
后端·架构·github
群联云防护小杜4 小时前
构建分布式高防架构实现业务零中断
前端·网络·分布式·tcp/ip·安全·游戏·架构
森焱森5 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机
wenzhangli76 小时前
从源码到思想:OneCode框架模块化设计如何解决前端大型应用痛点
架构·前端框架
秋千码途6 小时前
小架构step系列07:查找日志配置文件
spring boot·后端·架构
Ashlee_code8 小时前
什么是Web3?金融解决方案
开发语言·金融·架构·eclipse·web3·区块链·php
WebInfra11 小时前
如何在程序中嵌入有大量字符串的 HashMap
算法·设计模式·架构
森焱森12 小时前
APM与ChibiOS系统
c语言·单片机·算法·架构·无人机
安思派Anspire13 小时前
LangGraph + MCP + Ollama:构建强大代理 AI 的关键(一)
前端·深度学习·架构
radient14 小时前
Golang-GMP 万字洗髓经
后端·架构