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

un

访客
1 / ?
返回课程列表

在流量到达之前识别出的瓶颈节点

介数中心性

对于图中的每一对节点,它们之间存在一条最短路径。节点 N 的介数中心性 = 所有经过 N 的最短路径所占的比例。

高介数节点位于许多其他节点对之间的路径上。 如果它变慢,许多流量都会变慢。如果它失效,许多流量都会中断。

架构解读:高介数节点是每次架构评审都应格外关注的对象。它们集瓶颈、单点故障(SPOF)和容量关键组件于一身。它们通常是:

- DNS 提供商(位于每个客户端与每个服务之间)

- 入口代理(位于每个客户端与每个后端之间)

- 数据库主节点(位于每个后端与每次读取操作之间)

- 认证服务(位于每个用户与每个授权操作之间)

无需测量的检测:仅凭图拓扑即可识别高介数中心性节点。你不需要流量数据,只需要架构图。一个位于许多其他节点对之间的节点在结构上是关键的。

运营后果:高介数中心性节点值得在以下方面获得不成比例的投资:(1) 容量余量,(2) 冗余性,(3) 可观测性,以及 (4) 事件响应手册。

介数中心性:高亮节点位于大多数最短路径上

一个系统包含:100 个外部客户端 -> 1 个 DNS -> 1 个 CDN 供应商 -> 3 个反向代理 -> 12 个后端副本 -> {1 个数据库主节点, 2 个缓存节点, 5 个外部 API 端点}。请根据介数中心性对这些节点类别进行排名(从高到低),并解释为什么前两名值得特别关注。

最小割断开的是最小的切片

用通俗语言解释最小割定理

图中两个节点之间的最小割 = 为断开它们连接必须移除的最少边(或节点)数量。

操作性解读:最小割限制了最坏情况下的爆炸半径。如果 'clients' 与 'database' 之间的最小割为 1 条边(即单个代理),那么失去这条边就会使所有客户端与数据库断开连接。如果最小割为 5,则需要同时失去 5 个组件才能完全断开连接;虽然这是坏运气,但影响范围是有界的。

针对爆炸半径的设计:在每个重要边界处增加最小割。使用多个代理;多个缓存节点;数据中心之间多条网络路径。每增加一项,最小割值增加 1。

图论中的舱壁模式:将资源划分为彼此不共享最小割的独立子图。由于边不存在,一个子图内的故障无法传播到其他子图。

直径决定故障传播距离

图直径 = 任意两个节点之间最短路径中的最长者。

故障传播:当节点故障且重试流量回流时,它们会触及上游节点,直到距离达到直径为止。一个直径为 3 的系统(客户端 -> 代理 -> 后端 -> 数据库)意味着数据库故障会在重试风暴中影响 3 层上游。

影响:更短的直径 = 更快的故障遏制,但也意味着更高的节点集中度。每种设计都有其权衡。

最小割作为爆炸半径的上界;直径作为传播距离

为真实架构计算最小割

一个架构:1 个 DNS,1 个 CDN,3 个反向代理,12 个后端副本,1 个数据库主节点。

计算(或估算)以下三个边界处的最小割:(1) 外部客户端与反向代理层之间;(2) 反向代理层与后端层之间;(3) 后端层与数据库主节点之间。对于每个边界,请说明当该最小割被突破时,什么会失效。

基于图指标的故障模式审计

综合

你现在可以识别高介数节点,计算每个边界的最小割,并通过直径估算故障传播距离。

应用以上三点。

一个系统:50 个客户端点 -> 1 个 DNS -> 2 个 CDN 节点 -> 4 个反向代理 -> 16 个后端副本 -> { 数据库集群(1 个主节点 + 2 个备节点),Redis 集群(5 个节点),3 个外部 API }。

审计该系统:(1) 指出介数最高的节点,(2) 计算最值得关注边界处的最小割,以及 (3) 提出两项具体的架构变更(每项需提高某个最小割值,并指明其强化的具体边界)。

配套笔记

配套笔记

本“几何学”课程通过图指标(介数中心性、最小割、直径)重新诠释了故障模式与爆炸半径主课程的内容。

最后一份配套笔记 geometry_of_observability_and_capacity 探讨了 CDN PoP 覆盖区域的 Voronoi 单元、延迟三角形的光速下限,以及在代理层重新审视排队曲线。

干得好。