分布式环境下面临的问题:
网络通信:网络本身的不可靠性,因此会涉及到一些网络通信问题
三态:分布式架构里面,除了成功、失败、超时
分布式事务 :ACID特性
中心化和去中心化:冷备或者热备
经典的CAP/BASE理论
CAP C(一致性 Consistency): 所有节点上的数据,时刻保持一致 A可用性(Availability):每个请求都能够收到一个响应,无论响应成功或者失败 P分区容错 (Partition-tolerance):表示系统出现脑裂以后,可能导致某些server与集群中的其他机器失去联系
分布式系统因为网络的存在,必须存在P,所以我们的选择经常是牺牲掉C 或者牺牲掉A。于是就有了:CP / AP
CAP理论仅适用于原子读写的Nosql场景,不适用于数据库系统
BASE 基于CAP理论,CAP理论并不适用于数据库事务(因为更新一些错误的数据而导致数据出现紊乱,无论什么样的数据库高可用方案都是 徒劳) ,虽然XA事务可以保证数据库在分布式系统下的ACID特性,但是会带来性能方面的影响;
eBay尝试了一种完全不同的套路,放宽了对事务ACID的要求。提出了BASE理论 Basically available (基本可用): 数据库采用分片模式, 把100W的用户数据分布在5个实例上。如果破坏了其中一个实例,仍然可以保证 80%的用户可用
soft-state(软状态): 在基于client-server模式的系统中,server端是否有状态,决定了系统是否具备良好的水平扩展、负载均衡、故障恢复等特性。 Server端承诺会维护client端状态数据,这个状态仅仅维持一小段时间, 这段时间以后,server端就会丢弃这个状态,恢复正常状态
Eventually consistent:数据的最终一致性