分布式系统原理Day01-分布式系统基本概念

模型

节点

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

异常

  • 机器宕机: 系统最常见的异常之一
  • 网络异常:
    • 消息丢失,两片节点节点之间彼此完全无法通信,出现网络分化
    • 消息乱序,有一定几率不是按照发送时的顺序依次到达目的节点
      • 可以使用序列号等机制处理网络消息的乱序问题,使得无效的,过期的网络消息不影响系统的正确性
    • 数据错误
    • 不可靠的TCP
      • TCP协议为应用层提供了可靠的,面向连接的传输服务,但是在分布式系统的协议中不能认为所有网络通信都基于TCP协议则通信就是可靠的
      • TCP协议只能保证同一个TCP链接内的的网络消息不乱序,TCP链接之间的网络消息顺序则无法保证
  • 分布式三态:
    • 指某个节点向另一个节点发起RPC调用:
      • 即某个节点A向另一个节点B发送一个消息,节点B根据收到的消息内容完成某些操作,并将操作的结果通过另一个消息返回给节点A
    • 这个RPC执行的结构有三种状态:
      • 成功
      • 失败
      • 超时
    • 这就叫做分布式三态
  • 存储数据丢失:
    • 对于有状态的节点来说,数据丢失意味着状态丢失
    • 通常只能从其余节点获取,恢复存储的状态
  • 异常处理原则:
    • 任何在设计阶段考虑到的异常情况一定会在系统实际运行中发生
    • 但是在系统实际运行中遇到的异常却很有可能在设计中未考虑
    • 在系统设计时,不能放过任何异常情况

副本

  • 副本协议是贯穿整个分布式系统的理论核心
  • 副本: 指在分布式系统中为数据或服务提供的冗余
  • 数据副本: 指在不同的节点上持久化同一份数据,当出现某一个节点上的数据丢失时,可以从副本上读到数据
    • 数据副本是解决数据丢失异常的唯一手段
  • 服务副本: 指数个节点提供某种相同的服务,不依赖于节点的本地存储,所需要的数据来源于其余节点

副本一致性

  • 副本一致性: 分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同
  • 副本一致性是针对分布式系统而不是某一个副本
强一致性
  • 任何时刻,任何用户都可以读到最近一次成功更新的副本数据
  • 强一致性是程度最高的一致性要求,也是实践中最难实现的一致性
单调一致性
  • 任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值
  • 单调一致性是弱于强一致性但非常实用的一致性级别.因为,通常情况下,用户只关心从己方视角观察到的一致性而不会关注其余用户的一致性情况
会话一致性
  • 任何用户在某一次会话内一旦读到某个数据在某次更新后的值,这个用户在这个会话过程中不会再读到比这个值更旧的值
  • 会话一致性引入会话的概念,在单调一致性的基础上进一步放松约束
  • 会话一致性只保证单个用户单次会话内数据的单调修改,对于不同用户间的一致性和同一用户不同会话间的一致性没有保证
最终一致性
  • 最终一致性要求一旦更新成功,各个副本上的数据最终将达到完全一致的状态,但是达到完全完全一致状态所需要的时间没有保证
  • 对于最终一致性系统而言,一个用户只要始终读取某一个副本的数据,则可以实现单调一致性效果,但是一旦用户更换读取的副本,则无法保证任何一致性
弱一致性
  • 一旦某个更新成功,用户无法在一个确定的时间内读到这次更新的值
  • 即使在某个副本上读到了新的值,也不能保证在其余副本上可以读到新的值
  • 弱一致性系统不会在实际中使用,使用弱一致性系统需要应用方做更多的工作使得系统可用

指标

  • 衡量分布式系统的指标

性能

  • 系统的吞吐能力: 指系统在某一时间可以处理的数据总量,通常可以使用系统每秒处理的总的数据量来衡量
  • 系统的响应延迟: 指系统完成某一功能需要使用的时间
  • 系统的并发能力: 指系统可以同时完成某一功能的能力通常使用QPS来衡量
  • 上述三个性能指标往往会相互制约,追求高吞吐的系统,往往很难做到低延迟.系统平均响应时间较长时,也很难提高QPS

可用性

  • 指系统在面对各种异常时可以正确提供服务的能力
  • 可以用系统停服务的时间与正常服务的时间比例来衡量,也可以使用功能的失败次数与成功次数的比例来衡量
  • 可用性是分布式的重要指标,衡量了系统的鲁棒性,是系统容错能力的体现

可扩展性

  • 指分布式系统通过扩展集群机器规模提高系统性能(吞吐,延迟,并发),存储容量,计算能力的特性
  • 好的分布式系统总在追求线性扩展性,也就是使得系统的某一指标可以随着集群中的机器数量线性增长

一致性

  • 分布式系统为了提高可用性,不可避免会使用副本的机制,从而引发副本一致性问题
  • 越是强的一致性模型,对于用户使用来说使用起来越简单

猜你喜欢

转载自blog.csdn.net/JewaveOxford/article/details/107547213