入站与出站作为独立的集合
网络架构中的双分图
双分图将节点分为两个集合,仅允许集合之间的边(不允许集合内的边)
网络边界具有自然的双分结构:
- 入口侧:外部客户端位于一侧,内部服务位于另一侧。边:外部请求进入,内部响应出站
- 出口侧:内部服务位于一侧,外部目的地位于另一侧。边:内部服务发起出站调用,外部响应返回
不对称性:
- 入口:源集合是无限的(互联网上的任何人)。目的集合是有限的(几种服务)。流量与用户数量成比例
- 出口:源集合是有限的(几种内部服务)。目的集合是有限的(几种已知合作伙伴)。流量与内部活动成比例
单机设计 将双双分图通过一个节点进行折叠。该节点具有从外部(入口)和从内部(出口的反向)获得的扇入。该节点的负载 = 两侧的总和
分裂设计 通过分开两个节点来保持双双分图。每个节点处理一个角色及其适当的扩展轴
在拆分之前:切点顶点处处存在
单盒:一切都在一个顶点上
在分裂之前,单个代理盒子连接了所有外部/内部对。在图形术语中,它是一个高阶切点:它的移除将使所有客户端与所有后端断开,并且所有内部服务与所有外部合作伙伴之间的连接也会中断。
在这个节点的连接性为1。Anything that disrupts this node (process crash, network glitch, OOM kill) disconnects every dependent path。
分裂后:切点被两个轻一点的节点替换
将其分成入口+出口创建了两个图节点,其中一个。每个节点现在都在一个分层的半层上:
- 入口节点:外部客户端到内部服务的分层半层的切点
- 出口节点:内部服务到合作伙伴的分层半层的切点
Hairpin loop 减小了几何:在单个盒子图中,一个内部服务试图通过公共地址与一个外向服务建立连接,需要穿过相同顶点两次(通过出口角色出发,然后通过入口角色入站)。在分裂后的图中,穿越需要访问两个不同的顶点。
每个侧的连接性保持为1,但两个切点可以独立替换。添加第二个入口代理增加入口侧的连接性为2,而不改变出口侧。
每侧的复制
生产集群通常运行2+个入口代理(HA)和2+个出口代理(HA)。每个侧的连接性分别为2。每个侧根据需要进行水平扩展。
网络分区容忍度
综合
您现在可以将网络架构视为双分组图,识别切点和跟踪每半部分的连通性。
将此应用于网络分区。
一个 网络分区 是一个图割:分区之外的边失败;两侧各自继续运行但无法相互访问。
一个地理分布式系统有两个数据中心通过单条跨DC链路相连。入口流量通过DC1进入;出口流量通过DC1传输到外部合作方;一些内部服务在DC2中运行并调用DC1的有状态操作。
陪伴笔记
陪伴笔记
这个几何学课将 入口与出口分离 的主要课题重新表述为双分组图分析。
下一个陪伴geometry_of_failure_modes_and_blast_radius,导出中介中心性(识别瓶颈节点)和最小割(界定爆炸半径)。
很好。