spring-cloud-alibab-nacos-discovery
服务的注册发现
1、服务注册
Nacos Client启动会通过Rest请求,将自己 注册到nacos server,nacos server收到请求之后会将元数据信息粗出到Map中
2、服务心跳
nacos client 定时发送心跳到nacos server,证明是一直启用状态,防止被删除,默认是5s发送一次
3、服务同步
4、服务发现
nacos client 在调用服务的时候,会发送rest请求到nacos server,获取上面的服务清单,并缓存到nacos client 本地,同时在本地开启一个定时任务,定时的拉取服务端最新的注册表的信息并更新到本地。
5、服务健康检查
nacos server 会开启一个定时任务来检查注册服务实例的健康状态,超过15s没有收到客户端心跳的话,就将此客户端的healthy属性设置为false(其他客户端不会发现这个实例),如果超过30s没有收到心跳,就直接删除这个实例。
CAP原理
C:一致性,A:可用性,P:分区容错性
nacos默认使用AP
雪崩保护
在nacos客户端中可以设置保护阈值,可以设置0-1之间的值,比如设置0.5
在配置文件中配置spring.cloud.nacos.dioscovery.ephemeral=false,表示当前服务是永久实例,不会在服务列表中删除。
健康实例/总实例数<保护的阈值,这个时候当高并发的时候也会使用不健康的实例进行使用,防止服务雪崩。
一般不会使用这个雪崩保护,会使用服务降级。