目录

《数据密集型应用系统设计》第8章-分布式系统的挑战

网络不可靠

网络延迟

  1. ​分组交换:以太网和IP都是基于此,最大限度利用带宽
  2. ​电路交换:打电话,它的延迟可确定,但带宽利用率不高

网络拥塞

  1. ​交换机的Head of Line Blocking问题
  2. ​CPU繁忙
  3. ​虚拟化环境下,VM切换造成暂停
  4. ​TCP的拥塞控制,还没发出去,在本机就被拥塞控制了

​时钟不可靠

​墙上时钟

定义:​自1970.1.1以来的时间,以秒或毫秒为单位

问题:

  1. ​晶振不准确、偏移等问题
  2. ​ntp同步问题
    • ​相差太大,拒绝同步
    • ​网络延迟问题
    • ​时间回跳问题

​单调时钟

  1. ​绝对值无意义,用来测量耗时(一般取值为开机运行时间)
  2. ​保证绝不回跳,因而得名
  3. ​多路CPU,则相互之间的单调时钟可能存在偏差

​事件发生顺序的测量

  1. ​不能依赖于各个节点的墙上时钟
  2. ​应该基于递增计数器的逻辑时钟

拜占庭将军问题​

  1. 拜占庭容错系统:恶意节点存在,但系统仍可继续正常运行
  2. ​飞控系统、飞船等系统必须做到拜占庭容错
  3. ​区块链:点对点,去中心化,就某项交易达成一致
  4. ​大多数拜占庭容错系统要求不少于2/3的节点正常工作

​Fencing令牌

​为了防止进程暂停造成锁的误用,简单来说就是对锁加一个版本号,然后资源方只认可最新的版本号。

没加​Fencing令牌前:

https://raw.githubusercontent.com/boatrainlsz/my-image-hosting/main/Screenshot_select-area_20231015112321.png

加​Fencing令牌后:

https://raw.githubusercontent.com/boatrainlsz/my-image-hosting/main/Screenshot_select-area_20231015112423.png