「微服务的细节」—— 周期性注册 or 一次性注册
1、Eureka
Eureka 集群采用是 Peer-to-Peer 数据同步模式,保证 AP 数据一致性。
Eureka-Client 的注册请求过来,Eureka-Server 在本地保存后添加到同步队列,然后就返回注册成功,异步持久化注册信息。
这种模式有个问题,就是在 Eureka-Server 宕机时有可能丢失注册信息,为了适用这个模式,客户端对应的注册流程是放在周期性心跳流程中的,如果心跳请求返回 404 那么发起一次注册请求。
2、Nacos
Nacos 集群支持的场景比较丰富,从客户端的注册逻辑来看可以分为两种:
ephemeral 实例注册
对于 ephemeral 实例, Nacose-Client 的流程与 Eureka-Client 一样,Nacos-Server 在将注册信息保存到本地缓存后就返回注册成功,然后 Nacos-Server 异步通过自研的 Distro 协议实现了 AP 的数据一致性。
persistent 实例注册
persistent 实例注册是一次性的,也就是说 Nacos-Server 返回注册成功,那么就代表注册信息在集群中持久化了,不需要客户端再进行重注册了。对于该场景 Nacos-Server 基于 raft 协议实现了 CP 的数据一致性。
3、SOFARegistry
与 Eureka 一样 SOFARegistry 提供的也是 AP 数据一致性,SOFARegistry-Server 收到请求后异步调 Data Cluster 持久化数据。
但是 Client 的逻辑不太一样,SOFARegistry-Client 没有心跳请求,取而代之的是一个检测重试任务。
版权声明: 本文为 InfoQ 作者【袁世超】的原创文章。
原文链接:【http://xie.infoq.cn/article/5ffefc39767478f621c34a89f】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论