CAP理论对于一个分布式系统来说,设计读写操作时,需要考虑同时满足三点中的两个。
Consistency一致性:所有节点访问同一份最新的数据副本
Availability可用性:非故障的节点在合理时间内返回正确的响应。
Partition tolerance分区容错性:分布式系统出现网络分区(多个节点本来网络是联通的,因为某些故障,不联通了,整个网络就分成了几块区域),仍然能够对外提供服务。
分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构,如ZooKeeper是CP,Eureka就是AP架构,而Nacos不仅支持CP架构也支持AP架构。
BASE理论(对CAP理论中AP方案的延伸):
即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
Basically Available基本可用、Soft-state软状态和Eventually Consistent最终一致性.BASE理论是对CAO中一致性C和可用性A权衡的结果。其来源于对大规模互联网系统分布式实践的总结。
1、基本可用:指分布式系统在出现不可预知故障的时候,允许损失部分可用性,但绝不等价于系统不可用
2、软状态:允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性。
3、最终一致性:强调的是系统中所有的数据副本,在经过一段时间的同步后最终能够达到一个一致的状态。
分布式一致性3个级别:
1、强一致性:系统写入什么,读出来就是什么
2、弱一致性:不保证多少时间之后读取的数据是最新的,只是会尽量保证某个时刻达到数据一致的状态
3、最终一致性
实现最终一致性的具体方式:
1、读时修复:读取数据时,检测数据不一致,进行修复
2、写时修复:在写入数据,检测数据不一致,进行修复(比较推荐,对性能消耗较低)
3、异步修复:定时对账检测副本数据的一致性,并修复
网关:一般情况下,网关都会提供请求转发、安全认证(身份、权限认证)、流量控制、负载均衡、容灾、日志、监控等功能。实际上就是请求过滤操作。