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