《数据密集型应用系统设计》第8章-分布式系统的挑战
目录
网络不可靠
网络延迟
- 分组交换:以太网和IP都是基于此,最大限度利用带宽
- 电路交换:打电话,它的延迟可确定,但带宽利用率不高
网络拥塞
- 交换机的Head of Line Blocking问题
- CPU繁忙
- 虚拟化环境下,VM切换造成暂停
- TCP的拥塞控制,还没发出去,在本机就被拥塞控制了
时钟不可靠
墙上时钟
定义:自1970.1.1以来的时间,以秒或毫秒为单位
问题:
- 晶振不准确、偏移等问题
- ntp同步问题
- 相差太大,拒绝同步
- 网络延迟问题
- 时间回跳问题
单调时钟
- 绝对值无意义,用来测量耗时(一般取值为开机运行时间)
- 保证绝不回跳,因而得名
- 多路CPU,则相互之间的单调时钟可能存在偏差
事件发生顺序的测量
- 不能依赖于各个节点的墙上时钟
- 应该基于递增计数器的逻辑时钟
拜占庭将军问题
- 拜占庭容错系统:恶意节点存在,但系统仍可继续正常运行
- 飞控系统、飞船等系统必须做到拜占庭容错
- 区块链:点对点,去中心化,就某项交易达成一致
- 大多数拜占庭容错系统要求不少于2/3的节点正常工作
Fencing令牌
为了防止进程暂停造成锁的误用,简单来说就是对锁加一个版本号,然后资源方只认可最新的版本号。
没加Fencing令牌前:
加Fencing令牌后: