《数据密集型应用系统设计》整理07

第八章 分布式系统的挑战

Hey I just met you
The network’s laggy
But here’s my data
So store it maybe
—Kyle Kingsbury, Carly Rae Jepsen and the Perils of Network Partitions (2013)

本章讨论了分布式系统可能出现的各种挑战。

  • 网络发包可能丢失或延迟,回复也可能丢失或延迟,所以,如果没有收到回复,无法确定消息是否发送成功;
  • 节点时钟可能不同步,不准确;
  • 进程执行中可能会遭受暂停(比如GC,或者CPU被窃取时钟,或者虚拟机迁移),然后被宣告失效,后面又恢复了,但是却对中间的失效状态一无所知;

部分失效是分布式系统的关键特征。
所以需要构建能够容忍部分失效的分布式系统。

  1. 检测错误。可以用超时,但是因为网络可变,所以也不可靠;
  2. 容忍失效。单个节点无法安全的做出决策,需要多个节点之间的共识协议,并争取达到法定票数;
comments powered by Disqus