1. Consul,Zookeeper,Eureka的异同点
名字 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | boot集成 |
---|---|---|---|---|---|
Eureka | Java | AP(保证高可用) | 可配支持 | HTTP | 是 |
Consul | Go | CP(保证数据一致) | 支持 | HTTP/DNS | 是 |
Zookeeper | Java | CP(保证数据一致) | 支持 | 客户端 | 是 |
-
CAP
- C:COnsistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
-
CAO理论关注粒度是数据,而不是整体系统设计的
- 核心理论
- 一个分布式系统不可能同时很好的满足一致性,可用性,分区容错性这三个需求
- 根据CAP原理将NoSql数据库分为满足CA原则,CP原则,AP原则的三大类
- CA——单点集群,满足一致性,可用性的系统;扩展性不高
- CP——满足一致性,分区容错性的系统;性能不高
- AP——满足可用性,分区容错性的系统;对一致性要求低
- 核心理论
-
例如:淘宝
- 淘宝京东:必须保证可用,必须是AP的,数据允许一定范围内出错,牺牲C数据一致来保证A可用;先保证系统不跨
-
AP架构
- 违背一致性C的要求,只满足可用性和分区容错,保证系统可用;AP
-
当没有出现网络分区时,系统A与B数据一致,X=1
-
当系统A的X修改为2
-
出现网络分区后,A与B之间的数据同步失败,系统B的X=1
-
当客户端请求系统B时,为了保证可用性,此时系统B返回旧值
-
CP架构
- 违背可用性A的要求,只满足一致性和分区容错,CP架构
- 当没有出现网络分区时,系统A与B数据一致,X=1
- 当系统A的X修改为2
- 出现网络分区后,A与B之间的数据同步失败,系统B的X=1
- 当客户端请求系统B时,为了保证一致性,此时系统B应该拒绝服务请求,返回错误码或者错误信息