icql

分布式

分布式:建立在网络之上的软件系统

1)特点

分布性 并发性:分布式系统中的多个节点,同时访问一个共享资源。如数据库、分布式存储 无序性:进程之间的消息通信,会出现顺序不一致问题

2)问题

网络通信:网络通信本身不可靠 网络分区(脑裂): 比如,存在A\B\C\D\E五个节点,A\B处于同一子网,B\C\D处于另外一子网,中间通过交换机相连。 若两个子网间的交换机故障了即发生了网络分区,A\B和C\D\E便不能通讯。 虽然看起来系统仍能正常工作,但会发生数据不一致问题 三态:分布式架构中包含成功、失败、超时三种状态

3)中心化和去中心化

中心化:正常状态下只有主服务器提供服务,其他从服务器只同步数据(冷备或热备),发生故障时切换到从服务器 去中心化:zookeeper/etcd,正常情况下,主服务器提供写服务,主从服务器都提供读服务,当集群发生故障的时,集群中会自动“选举”出一个新的领导



CAP理论

一致性 consistency: 所有节点在同一时间的数据完全一致(强一致性) 可用性 availability: 服务在正常响应时间内一直可用 分区容错性 partition-tolerance: 在网络分区时(脑裂),仍能提供满足一致性或可用性的服务

分布式系统网络通信不可靠,所以一定要满足 分区容错性P 只有在满足P的前提下,讨论CA才有意义

A、B服务器同步数据,现在A B之间网络断掉了,那么现在发来A一个写入请求 1)如果A写了,无法同步到B,跟B的数据就不一致了,丧失了一致性C 2)如果A不写,那么我们就失去了A的服务,丧失了可用性A 所以:CAP理论,只能同时满足 PC 或者 PA

互联网应用大多保证PA,牺牲强一致性,采用 最终一致性 做补偿 银行等涉及钱财的,一定保证C,可能会舍弃A和P



BASE理论

基于CAP理论,认为大多数情况下网络分区(脑裂)很少出现,即能同时满足PCA 当出现分区故障时,选择PA,采用 最终一致性 做补偿

基本可用 Basically Available: 允许损失部分可用功能,保证核心功能可用,例如订单服务出现问题,但商品服务依然正常 软状态 Soft State: 允许不同节点的数据不一致存在数据延时,即存在中间状态(软状态,硬状态指的是强一致性),例如支付中、数据同步中等 最终一致性 Eventually Consistent: 不可能一直是软状态,数据会最终保持一致