| 组件名 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | Spring Cloud 集成 |
|---|---|---|---|---|---|
| Eureka | Java | AP | 可配支持 | HTTP | 已集成 |
| Consul | Go | CP | 支持 | HTTP/DNS | 已集成 |
| Zookeeper | Java | CP | 支持 | 客户端 | 已集成 |
CAP模型
C Consistency 一致性所有节点访问同一份数据,同一时刻读到的数据完全一样。写操作完成后,任意节点查询都能拿到最新值。
比如 ZK:主节点写完,同步所有从节点成功才算写成功,客户端读到的一定是最新数据。
A Availability 可用性系统中正常节点收到请求,一定能给出响应(不会超时、不会拒绝服务)。
只要集群还有活着的节点,就能对外提供服务。
- P Partition tolerance 分区容错性网络故障,集群节点之间网络不通(网络分区),系统依然可以继续工作。
三者最多只能同时较好的满足两个。
CAP 理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求, 因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
Eureka:AP
ZooKeeper、Consul:CP
一、Eureka
Netflix 开源的服务注册与发现组件,Spring Cloud Netflix 核心组件,AP 模型,适合微服务注册中心;已经停止维护。
防止错误删除服务(主要是因为网络堵塞等问题),Eureka可以保证服务在一段时间以内不进行删除。
二、ZooKeeper
CP模型 安装在服务器端,属于建立的临时节点,收不到服务的心跳一段时间后会自动对服务进行清理。
三、consul
Consul是一套开源的分布式服务发现和配置管理系统,提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用,总之提供了一种完整的服务网格解决方案。
有很多优点,基于raft协议 支持健康检查,同时支持HTTP DNS协议,支持跨数据中心的集群,支持多平台win、 Linux、Mac等。