深度介绍分布式系统原理

1概念1.1模型1.2副本1.3衡量分布式系统的指标2分布式系统原理2.1数据分布方式2.2基本副本协议2.3Lease机制2.4Quorum机制2.5日志技术2.6两阶段提交协议2.7MVCC2.8Paxos协议2.9CAP

1概念

1.1模型

节点

在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。

异常

机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24小时,一般需要人工介入重启机器。网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了“网络分化”;消息乱序,有一定的概率不是按照发送时的顺序依次到达目的节点,考虑使用序列号等机制处理网络消息的乱序问题,使得无效的、过期的网络消息不影响系统的正确性;数据错误;不可靠的TCP,TCP协议为应用层提供了可靠的、面向连接的传输服务,但在分布式系统的协议设计中不能认为所有网络通信都基于TCP协议则通信就是可靠的。TCP协议只能保证同一个TCP链接内的网络消息不乱序,TCP链接之间的网络消息顺序则无法保证。分布式三态:如果某个节点向另一个节点发起RPC(Remoteprocedurecall)调用,即某个节点A向另一个节点B发送一个消息,节点B根据收到的消息内容完成某些操作,并将操作的结果通过另一个消息返回给节点A,那么这个RPC执行的结果有三种状态:“成功”、“失败”、“超时(未知)”,称之为分布式系统的三态。存储数据丢失:对于有状态节点来说,数据丢失意味着状态丢失,通常只能从其他节点读取、恢复存储的状态。*异常处理原则*:被大量工程实践所检验过的异常处理黄金原则是:任何在设计阶段考虑到的异常情况一定会在系统实际运行中发生,但在系统实际运行遇到的异常却很有可能在设计时未能考虑,所以,除非需求指标允许,在系统设计时不能放过任何异常情况。

1.2副本

副本(replica/copy)指在分布式系统中为数据或服务提供的冗余。对于数据副本指在不同的节点上持久化同一份数据,当出现某一个节点的存储的数据丢失时,可以从副本上读到数据。

数据副本是分布式系统解决数据丢失异常的唯一手段。另一类副本是服务副本,指数个节点提供某种相同的服务,这种服务一般并不依赖于节点的本地存储,其所需数据一般来自其他节点。

副本协议是贯穿整个分布式系统的理论核心。

副本一致性

分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统而言的,不是针对某一个副本而言。

强一致性(strongconsistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。单调一致性(monotonicconsistency):任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。单调一致性是弱于强一致性却非常实用的一种一致性级别。因为通常来说,用户只关心从己方视角观察到的一致性,而不会


转载请注明:http://www.aierlanlan.com/rzgz/5480.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了