分布式系统原理

概念

分布式系统模型

分布式系统异常

  • 机器宕机,导致数据丢失,程序执行失败
  • 网络异常
    • 消息丢失
    • 发送超时
    • 消息乱序
    • TCP不可靠,是因为报文能够可靠到达TCP协议栈中,但发送到应用层可能出现问题,线程不能正确读取,或者tcp缓冲区出现问题
  • 分布式系统的三态
    当分布式节点A向B发送RPC调用,结果可能是成功,失败,超时。“超时”其实可以算失败。
  • 存储数据丢失
  • 无法归类的异常

副本

系统评价指标

  • 性能 吞吐量、并发程度、响应延迟
  • 可扩展性
  • 一致性 由于扩展原因,出现的副本一致性问题。
  • 可用性 可用时间占比等

分布式系统原理

数据的分布方式

实现分布式原因:单机无法解决大规模数据存储、计算问题,需要多台机器协作完成。如何实现大规模数据的拆分成为分布式系统基本问题。

  1. 哈希方式

    • 解释:计算数据的哈希值,取余映射到一组服务器组中。
    • 优点:哈希方式的好坏取决于哈希函数的选取,合适的哈希函数能够将数据均匀映射到各台机器中。
    • 缺点:无法实现扩展,当需要加入新的机器时候,原来机器上的数据会无法访问,所有数据需要从新迁移。数据的哈希值分布不均匀时候,出现数据倾斜。
    • 改进:保存对应关系,但保存关系需要一定大的开销。
  2. 按照数据范围分布

  3. 按数据量分布

  4. 副本与数据分布

    • 以机器作为副本单位,一组机器中任意两台机器都互为副本。

      优点:管理方便。没有大量元数据需要管理。
      缺点:恢复效率低,容错率低。一台机器宕机时,只能从本组的其他机器中恢复数据,速度慢,影响业务运行。
    • 以数据段为副本单位。

      优点:恢复效率高,一台机器出现宕机时,可以从其他所有机器进行恢复,恢复效率高。
      缺点:当有大量数据存储时,管理元数据需要一定的开销。
  5. 本地化计算
    如果计算节点和存储节点不是在一台物理主机上,计算的数据则需要通过网络传输到达计算节点。衍生出计算调度方法:将计算调度到与存储节点在同一台物理机器上的计算节点进行。

基本副本协议

按照特定的流程控制副本数据的读写行为。

  1. 中心化副本控制协议

  2. 去中心化副本控制协议

Lease机制

重要应用:判定节点状态

Quorum机制

日志技术

用于宕机恢复

两阶段提交协议

基于MVCC的分布式事务

Paxos协议

CAP理论

posted @ 2019-03-13 19:20  御心飞行  阅读(1654)  评论(0编辑  收藏  举报