分布式系统需要实现的指标
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): 同步模型是一个理想的模型,基于下面三个假设我们能够决定事务发生的全局顺序,也能够判断一个节点是执行失败了还是执行太慢没有响应。
- 时钟漂移有上限(即系统有一个全局时钟)
- 网络延迟有上限
- 所有节点运行速率一样(运行时间有上限)
异步模型 (asynchronous system model):我们实际生活中的是异步模型,异步模型中节点没有同步的全局时钟,网络有可能无线延迟,节点的处理速率不一样
基本理论
- CAP理论:在分区(Partition)存在的情况下,系统的一致性(Consistency)和可用性(Availability)之间不可能同时满足。这里的一致性是指强一致性
- FLP不可能理论:在一个异步系统中,不存在一个确定的算法是系统达到共识,即使消息不会丢失,系统中的节点只可能因为crash而fail
- BASE理论:在实际场景中,系统基本可以(Base Available),存在不一致的中间状态(Soft State) ,系统具有最终一致性(Eventually Consistency)
基本算法
2PC,3PC,paxos, raft
✅ @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!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit