和朋友聊了下一些他目前遇到的一些稳定性的上的问题,我的观点差不多是这样
1. 服务的部署,机房的规划本质上是一个图论问题
2. 不同的节点和不同的服务在不同维度上组合成一个图
3. 而且 SRE 或者说稳定性工作的重点是定义清楚不同的爆炸路径和爆炸半径,将爆炸半径压缩至最小
换句话说对服务的数据路径进行建模,避免图/domain 之间的交叉调用非常重要
比如说我现在有不少新加坡的节点,还有不少欧洲的节点,我能不能将这些节点统一规划在同一个 K8S 集群内呢?
从我的角度出发,是不能的,为什么呢?因为从地理维度出发,SG 和 EU 节点是需要规划在不同的图内,换句话说,SG 节点的功能故障应该只约束在 SG 节点内,EU 节点的故障值只应该约束在 EU 节点内
比如我 EU 节点的 A 服务走 SVC 调用全 Region B 服务。那么将会存在一个情况,假设 SG 的服务出现故障,那么在 SVC 负载均衡的前提下,SG Region 有问题的 B 服务会导致 EU Region 的 A 服务出现问题。那么这就属于很典型的爆炸半径和范围没有定义清楚,从而导致爆炸无限扩散了
差不多这样,希望对大家有帮助
#刷leetcode刷出幻觉了
1. 服务的部署,机房的规划本质上是一个图论问题
2. 不同的节点和不同的服务在不同维度上组合成一个图
3. 而且 SRE 或者说稳定性工作的重点是定义清楚不同的爆炸路径和爆炸半径,将爆炸半径压缩至最小
换句话说对服务的数据路径进行建模,避免图/domain 之间的交叉调用非常重要
比如说我现在有不少新加坡的节点,还有不少欧洲的节点,我能不能将这些节点统一规划在同一个 K8S 集群内呢?
从我的角度出发,是不能的,为什么呢?因为从地理维度出发,SG 和 EU 节点是需要规划在不同的图内,换句话说,SG 节点的功能故障应该只约束在 SG 节点内,EU 节点的故障值只应该约束在 EU 节点内
比如我 EU 节点的 A 服务走 SVC 调用全 Region B 服务。那么将会存在一个情况,假设 SG 的服务出现故障,那么在 SVC 负载均衡的前提下,SG Region 有问题的 B 服务会导致 EU Region 的 A 服务出现问题。那么这就属于很典型的爆炸半径和范围没有定义清楚,从而导致爆炸无限扩散了
差不多这样,希望对大家有帮助
#刷leetcode刷出幻觉了