服务的注册与发现
Feature | Consul | Zookeeper | Etcd | Eureka | Nacos |
---|---|---|---|---|---|
服务健康检查 | 服务状态,内存,硬盘等 | (弱)长连接,keepalive | 连接心跳 | 可配支持 | 传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查 |
多数据中心 | 支持 | — | — | — | 支持 |
kv存储服务 | 支持 | 支持 | 支持 | — | 支持 |
CAP定理 | CP | CP | CP | AP | CP: 配置中心 AP: 注册中心 |
使用接口(多语言能力) | 支持http和dns | 客户端 | http/grpc | http(sidecar) | Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent |
watch支持 | 全量/支持long polling | 支持 | 支持 long polling | 支持 long polling/大部分增量 | 支持 long polling/大部分增量 |
自身监控 | metrics | — | metrics | metrics | |
安全 | acl /https | acl | https支持(弱) | — | acl |
Spring Cloud集成 | 已支持 | 已支持 | 已支持 | 已支持 | 已支持 |
备注 | 可以作为eureka的替代使用 | 2.0不在更新 | 1.支持dubbo 2.spring-cloud-alibaba支持 |
另外:
zookpeer采用的是Zab协议,类似二段提交。consul/etcd采用的是Raft算法。
zab协议:https://www.cnblogs.com/stateis0/p/9062133.html
redis 哨兵 选举:http://weizijun.cn/2015/04/30/Raft协议实战之Redis Sentinel的选举Leader源码解析/