在之前我们讲述了分布式系统会出现partial failures主要原因是部分组件或者服务发生故障faults,其实还存在另一个故障,即网络故障.今天我们来聊下分布式系统不可靠的网络问题....不可靠的网络问题分类
在前面我们讲述了分布式系统模型,其中已经对响应结果做出了分析,这里我借助《设计数据密集系统》一张图来说明下, 总结起来主要有三个方面:
请求/响应丢失: 数据包可能因物理链路故障(...(例如,对端进程可能因网络问题而暂时无响应而被认为节点宕机)
关于第一点相信很容易理解, 一般就是硬件故障导致的; 这里主要讲述下为什么网络数据包存在乱序以及网络延迟为什么是不可靠的, 最后我们再分析下分布式系统两大类集群存在服务节点失效判断的模糊性...在我们的异步网络中是采用分组交换的传输机制,也就是说我们会把网络的数据包拆分不同的小包通过数据传输进行传送,那么这些不同的数据包就好比我们高速公路上不同大小车型的车辆运行在同一个高速公路通道上,对于数据包的传输我们无法保证其顺序...对于异步网络的拓扑结构, 主要有两种, 即Fat Tree结构以及Spine-Leaf结构,如下:
关于同步与异步网络总结如下:
节点失效的模糊性
既然我们已经知道分布式系统中网络延迟具备不可靠性, 那么由于这个原因也给分布式系统额外增加了新的复杂度