1.1.2 分布式的特点
分布式系统:是一个硬件或软件组件分布在不同的网络计算机上,彼此间仅仅通过消息传递进行通信和协调的系统。
-
- 分布性 空间上随意分布,分布也会随时变动
- 对等性
数据副本
服务副本:节点提供同样的服务 - 并发性
- 缺乏全局时钟
空间上随意分布,通过消息进行通信。因此很难定义事件的先后 - 故障总会发生
1.1.3 分布式环境的各种问题
通信异常
网络分区:极端情况下,网络异常出现的小集群会独立完成原本需要整个分布式系统才能完成的功能,包括对数据的事务处理,这就对分布式一致性提出了非常大的挑战。
三态:成功,失败,超时
节点故障
1.2.3 CAP和BASE理论
- 一致性
一个数据副本分布在不同分布式节点上,一个节点数据更新成功后,所有用户取到的值都是最新的,则认为具有强一致性 - 可用性
系统提供的服务必须一直处于可用状态,对于每个请求总是能够在有限时间内返回结果如果超过指定时间,则认为系统不可用 - 分区容错性
遇到任何网络分区故障的时候,仍能够保证对外提供一致性和可用性的服务于,除非整个网络故障
分布式系统的基本要求
分布式肯定会部署不同节点,因此必然出现子网络。分区容错性是分布式系统必须面对和解决的问题。因此分布式系统需根据业务特点在C(一致性)和A(可用性)之间寻求平衡。
-
- 放弃P
避免分区问题,可将数据放到一个节点,同时也放弃了可扩展性 - 放弃A
一旦系统遇到网络分区或其他故障,服务需要等待一定时间,等待期间不可用 - 放弃C
放弃强一致性,保留数据最终一致性。无法保证实时一致性。引入了一个时间窗口的概念,具体多久能够达到一致性取决于系统设计(主要包括副本节点间的复制时间长短)
完全放弃一致性,整个系统是没有价值的。
- 放弃P
BASE理论
Basically Available (基本可用) ,Soft state (软状态),Eventually consistent(最终一致性)
-
- 基本可用
出现故障时,允许损失部分可用性,绝不是系统不可用,例如:
1.响应时间上的损失,本来0.5秒返回结果,由于出现故障,响应时间增加到了1~2秒
2.功能上的损失,因为一些促销活动导致购物激增,为了保护系统购物稳定性,部分消费者可能会被引导到一个降级页面。 - 软状态(弱状态)
允许系统数据存在中间状态,并且中间状态不影响整体可用性,即允许不同节点副本间同步数据过程存在延时 - 最终一致性(特殊的弱一致性)
系统中所有副本,经过一段时间后(不是实时的),达到一个一致的状态。
- 基本可用