概念 分布式系统模型
分布式系统异常机器宕机,导致数据丢失,程序执行失败
网络异常
消息丢失
发送超时
消息乱序
TCP不可靠,是因为报文能够可靠到达TCP协议栈中,但发送到应用层可能出现问题,线程不能正确读取,或者tcp缓冲区出现问题
分布式系统的三态
当分布式节点A向B发送RPC调用,结果可能是成功,失败,超时。“超时”其实可以算失败。
存储数据丢失
无法归类的异常
副本 系统评价指标性能 吞吐量、并发程度、响应延迟
可扩展性
一致性 由于扩展原因,出现的副本一致性问题。
可用性 可用时间占比等
分布式系统原理 数据的分布方式实现分布式原因:单机无法解决大规模数据存储、计算问题,需要多台机器协作完成。如何实现大规模数据的拆分成为分布式系统基本问题。
哈希方式
解释:计算数据的哈希值,取余映射到一组服务器组中。
优点:哈希方式的好坏取决于哈希函数的选取,合适的哈希函数能够将数据均匀映射到各台机器中。
缺点:无法实现扩展,当需要加入新的机器时候,原来机器上的数据会无法访问,所有数据需要从新迁移。数据的哈希值分布不均匀时候,出现数据倾斜。
改进:保存对应关系,但保存关系需要一定大的开销。
按照数据范围分布
按数据量分布
副本与数据分布
以机器作为副本单位,一组机器中任意两台机器都互为副本。
优点:管理方便。没有大量元数据需要管理。
缺点:恢复效率低,容错率低。一台机器宕机时,只能从本组的其他机器中恢复数据,速度慢,影响业务运行。
以数据段为副本单位。
优点:恢复效率高,一台机器出现宕机时,可以从其他所有机器进行恢复,恢复效率高。
缺点:当有大量数据存储时,管理元数据需要一定的开销。
本地化计算
如果计算节点和存储节点不是在一台物理主机上,计算的数据则需要通过网络传输到达计算节点。衍生出计算调度方法:将计算调度到与存储节点在同一台物理机器上的计算节点进行。
按照特定的流程控制副本数据的读写行为。
中心化副本控制协议
去中心化副本控制协议
Lease机制重要应用:判定节点状态
Quorum机制 日志技术用于宕机恢复
两阶段提交协议 基于MVCC的分布式事务 Paxos协议 CAP理论