分布式环境的特点
分布性
并发性
程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储
此处的并发是不同进程中之间的并发。
无序性
进程之间的消息通信,会出现顺序不一致问题
分布式环境下面临的问题
网络通信
网络本身的不可靠性,因此会涉及到一些网络通信问题
网络分区(脑裂)
当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式架构的所有节点,只有部分节点能够正常通信。当网络分区出现时,分布式系统会出现局部小集群,在极端情况下,这些局部小集群会独立完成原本需要整个分布式系统才能完成的功能,包括对数据的事物处理,这就对分布式一致性提出了非常大的挑战
三态
在分布式架构里面,除了成功、失败 还有 超时
分布式事务
ACID(原子性、一致性、隔离性、持久性)
分布式事物是指事物的参与者、支持事物的服务器、资源服务器以及事物管理器分别位于分布式系统的不同节点上,通常一个分布式事物中会涉及对多个数据源或业务系统的操作。
中心化和去中心化
冷备或者热备
分布式架构里面,很多的架构思想采用的是:当集群发生故障的时候,集群中的人群会自动“选举”出一个新的领导。
最典型的是: zookeeper / etcd
经典的CAP/BASE 理论
CAP
c 一致性 consistency :所有节点上的数据时刻保持一致
a 可用性 availabilty : 每个请求都能够收到一个响应,无论响应是成功或者失败
p 分区容错性 Partition-tolerance ::单台服务器,或多台服务器出问题(主要是网络问题)后,正常服务的服务器依然能正常提供服务,并且满足设计好的一致性和可用性
重点在于:部分服务器因网络问题,业务依然能够继续运行
三选一 分区容错是系统一定要满足的 , cp/ap
cap 理论仅仅适用于 原子对象 nosql场景,不适应与数据库系统 因为更新一些错误的数据而导致数据出现紊乱,无论什么样的数据库高可用方案都是徒劳。
基于CAP理论,XA事务(一种分布式事务解决方案)虽然可以保证数据库在分布式系统下ACID特性,但是会带来性能方面的影响。
BASE
e-Bay 尝试了一种完全不同的套路,放宽了对事务ACID的要求。提出了BASE理论。
Basically available:(基本可用)数据库采用分片模式,例如将100w用户数据分布到5个实例上,如果破坏了其中一个实例 ,仍然可保证80%用户可用。
soft-state:在基于client-server 模式的系统中,server是否有状态决定了系统是否具备良好的水平扩展,负载均衡,故障恢复等特性。soft-state 表示 server端承诺维护client端状态数据,这个状态仅仅维护一小段时间,这段时间之后,server端就会丢弃这个状态,恢复正常状态。
软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
Eventually consistent : 数据的最终一致性。
最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。