CAP理论
Consistency(一致性):
- 如果在A节点设置key为value1,A节点发生故障,切换另一个节点B查询应该查到key不一定为value1
- 应该不返回数据,避免数据不一致。恢复后,再提供准确数据
Availability(可用性):
- 在多个分布式节点上,部分节点间通信中断,在业务容许的响应时间内,能够正常提供服务,则服务具有较高的可用性
Partition tolerance(分区容错性):
- 分布式系统中,节点间因网络、机器等原因出现通信中断问题,则称分布式系统出现了分区
- 此时即使出现了分区故障,系统还能正常运行,各服务节点还能对外提供服务
CP 系统:
- 要求数据的一致性,节点一旦出现故障,数据一致前,客户端请求都拒绝,直到节点能够提供一致的数据
- 通常金融系统会要求数据强一致性
- Zookeeper(Zookeeper + Doubbo)、Consul、Nacos
AP系统:
- 要求服务的可用性,节点即使出现故障,服务依旧能对外提供服务,但是可能提供的数据不一致
- 在一个完整的系统中,也要根据使用场景,来选择AP或CP,看是更注重一致性还是更关心可用性
- Nacos、Eureka
Nacos
临时实例和永久实例:
- 临时实例保存在服务端缓存中,不会持久化到磁盘
- 服务实例出现下线之后,这个服务实例会从服务注册表中移除
- 永久实例不仅存在服务注册表中,也会持久化到磁盘
- 当实例出现下线,会将实例状态设置为不健康,不会从服务表中移除
- 默认实例是临时实例,永久实例可以注册MySQL、Redis