1 大型主机存在的问题:
1.对技术人员要求高
2.价格昂贵
3.容易单点故障
2 集中式与分布式特点:
集中式:一台或多台计算机组成中心节点,部署所有业务,集中处理功能
分布式:硬件或软件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调;
在没有业务逻辑的约束下,具有分布性、对等性、并发性、缺乏全局时钟、故障总是会发生的特征
3 分布式环境的问题:
1.通信异常:单机延时通常为10ns,分布式为0.1~1ms左右,巨大的延时差别影响了消息的收发过程,因此消息丢失和消息延迟变得非常普遍
2.网络分区:分布式系统中,不同节点分布在不同的子网络,网络发生异常时,可能会导致只有部分节点之间可以通信
3.三态:成功、失败与超时,而单机系统只有成功和失败;超时原因通常有两种,一为发送方的请求消息丢失,二为接收方的反馈消息丢失
4.节点故障:服务器节点出现宕机或”僵死“现象
4.ACID
事务的四个特征:
- Atomicity:原子性
- Consistency:一致性
- Isolation:隔离性,定义了4个隔离级别:ReadUncommitted、ReadCommitted、RepeatableRead、Serializable
- Durability:持久性
而在分布式系统中,则需要使用分布式事务
5.分布式事务
在单机系统中,事务比较容易实现;而在分布式系统中,则需要使用分布式事务,即跨越不同节点(网络)的事务
6.CAP
一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的两项
-
一致性
指数据在多个副本之间是否能够保持一致。若要保证一致性,则在更新操作后,应该保证系统数据仍然一致
-
可用性
指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在
有限的时间内
返回正常的结果(成功/失败,而不是一个让用户感到困惑的结果)
-
分区容错性
分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障
三个需求的关系如下图:
放弃其中任意一项,会造成的后果如下图:
分区容错性是必须满足的,否则分布式系统就没有存在的意义了,变成了单机系统
所以分布式系统架构设计就在于根据业务特点在一致性和可用性之间寻求平衡
7.BASE
BASE理论是对CAP中一致性和可用性权衡得来的结果,核心思想是即使无法做到强一致性,但每个应用可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性
-
Basically Avaliable
基本可用。指分布式系统在出现不可预知故障时,允许损失部分可用性
两个基本可用的典例:
-
Soft state
软/弱状态。和硬状态相对,指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时
-
Eventually consistent
最终一致性。指系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态,即不需要实时
最终一致性是一种特殊的弱一致性:系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问都能够获取到最新的值;同时,在没有发生故障的前提下,数据达到一致性的时间延迟,取决于网络延迟、系统负载和数据复制方案设计等因素最终一致性在实际工程中,存在以下五类变种:
因果一致性、读己之所写、会话一致性、单调读一致性、单调写一致性