AI 资源库 · 已整理 2 项

分片

查看与分片相关的 AI 资讯、工具、Skill、工作流和开源项目。

规模不是一个数字:Kubernetes 控制平面不堪重负的三种方式

这篇文章讲的是 Kubernetes 控制平面的容量问题,但重点不是“集群有多大”。作者举了三个完全不同的集群:一是上万节点的训练集群,大量节点不停上报心跳,把 apiserver 和 etcd 的内存吃光;二是节点数不多但对象频繁创建、销毁的 Agent 平台,写入压力巨大;三是装了两百个 operator、对象多得每个 apiserver 都要在内存里存一份的平台集群。文章的核心观点是:这三种压力方向不同,按节点数调优往往治错病,加 apiserver 还可能因为每个都复制全量 watch 缓存而让情况更糟。作者提出从四个“接缝”入手(存储分工、节点存活上报、分片维度、缓存驻留),并说明部分能力已有现成配置,像 KEP-4743、KEP-5866 这样的改进仍在推进中,具体何时可用原文没有说明。对运维 Kubernetes 的读者来说,这是一份先分清自己属于哪种规模压力、再决定调优方向的思路清单。

文中可用工具

  • Kubernetes容器编排系统,本文讨论的控制平面容量问题都发生在它上面
  • etcdKubernetes 的键值存储后端,本文建议把非持久流量分流出去并用内存 lease 刷新减轻写压力
  • kOps原文提到它文档里记录了增加 apiserver 的做法
  • KEP-4743定义存储接口边界的提案,用来把不同资源类型路由到不同后端
  • KEP-5866为 API 流量引入哈希范围过滤的提案,是分片的基础
  • etcd-servers-overrides已有配置项,可把资源类型指向不同的 etcd 后端,但目前只支持内置资源
☆ 收藏查看来源 ↗

Uber 重新设计 M3DB 分片:用子集群限制故障影响

Uber 重新设计了其开源时序数据库 M3DB 的分片摆放方式。原来节点故障、维护或扩容时,数据分片搬动可能拖累太多其他节点,故障影响范围不好控制。现在他们把集群切成固定大小的“子集群”,让分片依赖关系有上限,同时保持副本隔离,并用贪心算法挑选要迁移的分片,不再单独跑一轮均衡,减少多余的数据搬运。这样节点出问题或扩缩容时,影响面更小。目前文章未说明该方案在 Uber 内部或开源版本中的具体发布状态。

文中可用工具

  • M3DBUber 开源的时序数据库,用于存储监控指标等时间序列数据
☆ 收藏查看来源 ↗