Spring Cloud的5大组件
Eureka:注册中心
Ribbon:负载均衡
Feign:远程调用
Hystrix:服务熔断
Zuul/Gateway:网关
特别地,在Spring Cloud Alibaba中
Nacos:注册中心/配置中心
Ribbon:负载均衡
Feign:服务调用
Sentinel:服务保护
Gateway:服务网关
1、注册中心
注册中心的核心作用:服务注册和发现
常见的注册中心有:Eureka、Nocas、Zookeeper
1.1、Eureka
Eureka是Netflix开发的一个用于实现服务注册和发现的服务。Eureka主要由两部分组成:Eureka服务器和Eureka客户端。
(1)服务注册
服务方需要把自己的信息注册到eureka,由eureka来保持这些信息(如服务名称、IP、端口等)。
(2)服务发现
消费者向eureka拉取服务列表信息,如果服务方有集群,则消费方会利用负载均衡算法,选择一个发起调用。
(3)服务监控
服务方会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没收到心跳,从eureka中剔除。
1.2、Nacos
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它支持多种服务治理能力,包括服务注册与发现、动态配置管理、动态DNS服务等。
(1)注册服务
Nacos作为注册中心,接收客户端(服务实例)发起的注册请求,并将注册信息存放到注册中心进行管理。注册请求的处理包括客户端组装注册请求、随机选择集群中的一个Nacos节点发起注册、实现负载均衡、路由转发、处理请求、保证数据最终一致性等步骤。
(2)服务发现
Nacos通过维护服务实例的列表,使得服务消费者可以通过Nacos查询到可用服务的列表,进而进行服务调用。
(3)临时实例与永久实例
Nacos中区分了临时实例和永久实例。
临时实例在注册到注册中心后仅保存在服务端内部缓存中,不会持久化到磁盘。当服务实例异常或下线时,会从服务注册表中剔除。
而永久实例不仅存在于服务注册表中,还会被持久化到磁盘文件中。即使服务实例异常或下线,Nacos也不会将其从服务注册表中剔除,而是将其健康状态设置为不健康。
1.3、nacos和eureka的区别
在都作为注册中心的前提下
(1)共同点
1)都支持服务注册和服务拉取
2)都支持服务方心跳方式做健康检测
(2)不同点
1)nacos支持“服务端”主动检测“服务方”状态:临时实例采用心跳模式,非临时实例采用主动检测模式
2)临时实例心跳不正常会被剔除,非临时实例则不会被剔除
3)nacos支持服务列表变更的消息推送模式,服务列表更新更及时
4)nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;eureka采用AP方式
AP模式(Availability Priority Mode)高可用性
CP模式(Consistency Priority Mode)一致性
特别地,nacos还支持了配置中心,eureka则只有注册中心。
2、负载均衡
负载均衡ribbon,发起远程调用feign
2.1、Ribbon负载均衡策略有哪些
RoundRobinRule:简单轮询服务列表来选择服务器
WeightedResponseTimeRule:按照权重来选择服务器,响