2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
在我加入 库伯内特斯 团队初期,一位客户提出了一个既极具创意又超出我们当时准备范围的方案:在全球各个区域部署集群,每个区域一个,并同步一组作业任务。他们运行的是一个低延迟应用程序,希望跨大洲协调工作负载。问题在于,我们当时尚未找到实现这一目标的方法。
顺便提一下,我们内部曾有一个名为 “Ubernetes” 的项目,旨在解决这一问题,但在应用程序接口服务器中处理多集群协调的复杂性过高。我们不得不将其留待用户自行解决。
因此,我们协助该客户构建了一套解决方案,但这立即引发了我们所有人的思考。这不仅仅是一个部署问题——尽管 吉特奥普斯 此后已使部署更加可靠——而是一个共识问题。一旦存在多个无法相互通信的系统,就必然导致状态不同步。
我们拥有的共识与我们需要的共识
伊特西迪 是库伯内特斯的运行基础,它采用 拉夫特共识算法。对于其设计目标而言,这是一种经过验证的模型:保持单个集群的状态完全一致。当你创建部署或某个容器组终止时,集群中的每个节点几乎会立即就世界的新状态达成一致。
然而,一旦跨越单个集群的边界,所有共识保证都会失效。
如今,团队通常通过单一的中央真实数据源来规避这一问题,使用只写管道将声明式配置推送到各区域的库伯内特斯等端点。这对于无状态工作负载效果极佳。但一旦引入需要跨边界的状态化数据,该模型就会崩溃。
数据共识问题
无状态工作负载相对简单(或者说,在分布式系统世界中,这已是最简单的情况)。但是,当用户因负载均衡或数据主权法律而跨越区域边界时,会发生什么情况?你现在必须确定如何以及在哪里迁移他们的状态。常见的解决方案仅仅是权宜之计。我曾见过无数团队被迫使用复杂的服务网格和控制器构建脆弱且自定义的共识机制,这些控制器跨区域轮询应用程序接口,仅仅因为缺乏合适的工具。
考虑一个机器学习训练管道,为了符合合规要求,需要处理多个区域的用户数据。使用当前的库伯内特斯工具链,你最终会得到:
- 每个区域中单独且需手动协调的数据管道。
- 缺乏对处理状态的全局视图。
- 当作业跨越区域时出现竞态条件。
- 数据血缘追踪不一致。
每个集群都认为自己正在执行正确的操作,但从全局来看,你无法保证正确性。这并非理论推测。我曾目睹生产系统因集群 A 开始处理某个数据集,而集群 B 已在处理同一作业的一半进度而发生故障。两个集群在内部都是一致的,但全局系统却已崩溃。
为何拉夫特和帕索斯算法尚不足够
拉夫特算法在集群内部运行效果极佳,因为它假设低延迟和可靠的网络连接。然而,若将其扩展至跨区域场景,其核心假设便会失效。跨区域延迟不可预测,网络分区更是日常现实,而非罕见的边缘情况。帕索斯算法能更好地处理分区问题,但其复杂性使得在现代多云规模下正确实现变得极其困难
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。