当前位置: 首页 > article >正文

谈谈微服务的常用组件

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

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

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。


http://www.kler.cn/a/409752.html

相关文章:

  • 使用脚本实现hadoop-yarn-flink自动化部署
  • 公网弹性绑定负载均衡收费吗?
  • STM32的中断(什么是外部中断和其他中断以及中断号是什么)
  • PML和金属边界区别
  • 数字化工厂 MES试点方案全解析(三)
  • D78【 python 接口自动化学习】- python基础之HTTP
  • 面试题分析: Unity UGUI动静分离
  • Java中使用FFmpeg拉取RTSP流
  • 『 Linux 』网络层 - IP协议 (二)
  • Flink——进行数据转换时,报:Recovery is suppressed by NoRestartBackoffTimeStrategy
  • Flink Standalone集群模式安装部署
  • Spring学习笔记_49——@ResponseBody
  • Spring Boot 开发环境搭建详解
  • 【八股文】小米
  • 【漏洞复现】|百易云资产管理运营系统/mobilefront/c/2.php前台文件上传
  • 云计算虚拟化-kvm-无损扩容磁盘分区
  • java-分而治之算法
  • 极简开源Windows桌面定时提醒休息python程序
  • 常见排序算法总结 (一) - 三种基本排序
  • Java爬虫与淘宝API接口:高效数据采集的结合
  • 搜索二叉树(增删查)
  • Linux——Uboot命令使用
  • git提交到远程仓库如何撤回?
  • Stable Diffusion 3 部署笔记
  • 开源电话机器人产品的优点是什么?
  • Linux系统中查看当前使用的显示管理器