分布式基础

in #distribute7 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

学习资料

Sort:  

@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!

Coin Marketplace

STEEM 0.13
TRX 0.22
JST 0.030
BTC 82964.94
ETH 1892.42
USDT 1.00
SBD 0.79