分布式基础

in distribute •  7 years ago 

分布式系统需要实现的指标

  • scalability: 可扩展性,系统能够适应其工作增长的能力,随着其处理的工作增加,性能和可用性并不会降低

  • performance:性能,通过系统完成的一工作量已经需要的时间或资源衡量,具体要求:

    • 低响应时间, 低延迟
    • 系统资源使用率低(CPU和内存)
    • 高吞吐量

    latency:延迟, 事件开始到对外部可见之间的时间间隔。eg, 对数据的修改与实际用户观察到数据的修改

  • availability:可用性,系统可用时间所占比例

  • fault tolerence:容错, 当一些节点发生故障时,系统任然可用的能力

  • 分布式系统两个比较重要的属性:

    • safety: 安全性,是指坏的是一定不能发生,比如系统之间的节点同一条条记录不一致。
    • liveness:活性,是指好的事最终一定会发生,比如系统的最终一致性

分布式系统模型:

分布式系统模型需要是对下面几个方面的抽象:

  • 节点的能力以及节点是如何fail的(参加failure模型)
  • 节点之间的网络连接能保障的能力
  • 整个系统的一些属性,例如时间和顺序

接下来分别讨论这三方面

failures 模型

介绍故障模型前先讲一些故障的概念:
fault, error and failure
系统中某一个步骤偏离的正确的执行叫做fault,如果fault不可修复则称为error; 如果一个fault没能在影响整个node状态前被修复则是error;如果一个error没能在扩散到其他节点前修复则是failure。接下来我们所说的故障一般都是指failure.
原文

  • Byzantine or arbitrary failures
  • Authentification detectable byzantine failures
  • Omission failures
  • Crash failures:节点crash了,所有的请求都无法做出响应
  • Fail-stop failures:节点只存在crash failures,同时假设其他的节点能够检测到系统crash了。
节点之间的网络连接

现实情况下,系统提供的最低保障是节点之间的消息有可能延迟,重复,丢失,乱序

时间模型
  • 同步模型(synchronous system model): 同步模型是一个理想的模型,基于下面三个假设我们能够决定事务发生的全局顺序,也能够判断一个节点是执行失败了还是执行太慢没有响应。

    1. 时钟漂移有上限(即系统有一个全局时钟)
    2. 网络延迟有上限
    3. 所有节点运行速率一样(运行时间有上限)
  • 异步模型 (asynchronous system model):我们实际生活中的是异步模型,异步模型中节点没有同步的全局时钟,网络有可能无线延迟,节点的处理速率不一样

基本理论

  • CAP理论:在分区(Partition)存在的情况下,系统的一致性(Consistency)和可用性(Availability)之间不可能同时满足。这里的一致性是指强一致性
  • FLP不可能理论:在一个异步系统中,不存在一个确定的算法是系统达到共识,即使消息不会丢失,系统中的节点只可能因为crash而fail
  • BASE理论:在实际场景中,系统基本可以(Base Available),存在不一致的中间状态(Soft State) ,系统具有最终一致性(Eventually Consistency)

基本算法

2PC,3PC,paxos, raft

学习资料

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

@swifree1, I gave you an upvote on your post! Please give me a follow and I will give you a follow in return and possible future votes!

Thank you in advance!