一、简介
阿里巴巴旗下的一款提供注册中心和服务治理的服务管理平台。
二、数据一致性
目前来看基本可以归为两家:一种是基于 Leader 的非对等部署的单点写一致性,一种是对等部署的多写一致性。
当我们选用服务注册中心的时候,并没有一种协议能够覆盖所有场景
Nacos 因为要支持多种服务类型的注册,并能够具有机房容灾、集群扩展等必不可少的能力,在 1.0.0 正式支持 AP 和 CP 两种一致性协议并存。
目前的一致性协议实现,一个是基于简化的 Raft 的 CP 一致性,一个是基于自研协议 Distro 的 AP 一致性。
三、Raft协议
3.1 状态角色
跟随者follower、竞选者LOOKING、领导者 leader
3.2 选取机制
- 1.开始所有跟随者会生成一个睡眠时间随机数,谁先醒来就会成为竞选者;
- 2.竞选者再根据剩下跟随者投票选举领导者;(建议集群节点未奇数,避免投票数一致)
- 3.领导者根据心跳时间,定时给所有跟随者发送onlive信号,如果跟随者节点没有收到领导者的信号,睡眠时间较短的跟随者就会变为竞选者,向其他跟随者节点发送竞选消息,重新选举领导者。
3.3 数据同步
所有的请求交给leader实现,leader写完数据后,再把数据同步到每个follwer节点,采用日志形式同步数据(数据同步时采用2pc提交协议–leader先发通知请求,有一般以上follower响应,则同步数据。)
四、与Eureka、Zookeeper区别
项目 | Nacos | Eureka | Zookeeper |
---|---|---|---|
一致性协议 | CP+AP | AP | CP |
健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | Keep Alive |
负载均衡策略 | 权重/metadata/Selector | Ribbon | — |
雪崩保护 | 有 | 有 | 无 |
自动注销实例 | 支持 | 支持 | 支持 |
访问协议 | HTTP/DNS | HTTP | TCP |
监听支持 | 支持 | 支持 | 支持 |
多数据中心 | 支持 | 支持 | 不支持 |
跨注册中心同步 | 支持 | 不 支持 | 不支持 |
SpringCloud集成 | 支持 | 支持 | 支持 |
Dubbo集成 | 支持 | 不 支持 | 支持 |
K8S集成 | 支持 | 不支持 | 不支持 |