English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

访客
1 / ?
返回课程列表

入站与出站作为独立的集合

网络架构中的双分图

双分图将节点分为两个集合,仅允许集合之间的边(不允许集合内的边)

网络边界具有自然的双分结构:

- 入口侧:外部客户端位于一侧,内部服务位于另一侧。边:外部请求进入,内部响应出站

- 出口侧:内部服务位于一侧,外部目的地位于另一侧。边:内部服务发起出站调用,外部响应返回

不对称性

- 入口:源集合是无限的(互联网上的任何人)。目的集合是有限的(几种服务)。流量与用户数量成比例

- 出口:源集合是有限的(几种内部服务)。目的集合是有限的(几种已知合作伙伴)。流量与内部活动成比例

单机设计 将双双分图通过一个节点进行折叠。该节点具有从外部(入口)和从内部(出口的反向)获得的扇入。该节点的负载 = 两侧的总和

分裂设计 通过分开两个节点来保持双双分图。每个节点处理一个角色及其适当的扩展轴

双分入口与出口:分开的节点集合,分开的切点顶点

为一个拥有5个外部客户端点(发送请求入站),3个内部服务(后端)及4个外部合作伙伴API(调用出站)的小型SaaS绘制双分图。标明哪些边属于入口双分图的一半,哪些属于出口双分图的一半。预测在内部服务失败时,图连接性会发生什么变化。

在拆分之前:切点顶点处处存在

单盒:一切都在一个顶点上

在分裂之前,单个代理盒子连接了所有外部/内部对。在图形术语中,它是一个高阶切点:它的移除将使所有客户端与所有后端断开,并且所有内部服务与所有外部合作伙伴之间的连接也会中断。

在这个节点的连接性为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。每个侧根据需要进行水平扩展。

一个团队目前运行一个代理盒子(双向都有一个切点)。他们将其分为一个入口+一个出口,然后在后面添加一个第二个入口(HA对)但保留一个出口。逐步分析每一步图连接性变化,并在第三步后确定仍然为1-连接的分层(因此仍然是最低容错模式的半层)。

网络分区容忍度

综合

您现在可以将网络架构视为双分组图,识别切点和跟踪每半部分的连通性。

将此应用于网络分区。

一个 网络分区 是一个图割:分区之外的边失败;两侧各自继续运行但无法相互访问。

一个地理分布式系统有两个数据中心通过单条跨DC链路相连。入口流量通过DC1进入;出口流量通过DC1传输到外部合作方;一些内部服务在DC2中运行并调用DC1的有状态操作。

如果DC之间的链接失败会发生什么:(1)哪些分层半层在每个DC内保持连接,(2)哪些流量继续流动哪些停止,(3)提出一种架构变化,这将让系统在受限退化而不是完全中断的情况下容忍这种分区。

陪伴笔记

陪伴笔记

这个几何学课将 入口与出口分离 的主要课题重新表述为双分组图分析。

下一个陪伴geometry_of_failure_modes_and_blast_radius,导出中介中心性(识别瓶颈节点)和最小割(界定爆炸半径)。

很好。