写点什么

Pinterest 开源 Kafka 集群自愈和工作负载均衡工具:DoctorKafka

  • 2017-09-03
  • 本文字数:1632 字

    阅读完需:约 5 分钟

Pinterest 是一个进行图片分享的社交站点。他们使用 Kafka 作为中心化的消息传输工具,用于数据摄取、流处理等场景。随着用户数量的增加,Kafka 集群也越来越庞大,对它的管理日趋复杂,并变成了运维团队的沉重负担,因此他们研发了 Kafka 集群自愈和工作负载均衡工具 DoctorKafka,最近他们已经在 GitHub 上将该项目开源。

根据 Pinterest 的数据工程师 Yu Yang 的博客文章介绍,该网站已经有1.75 亿以上的用户,Pin 图片的数量超过了1000 亿,目前,他们在云端运行了1000 个以上的Kafka broker。

在这样的规模下,每周他们都会遇到Kafka broker 的故障,有时候一天之内就会遇到好几次。当broker 出现故障时,待命的工程师需要及时将已经处于死亡状态的broker 替换掉,从而尽可能减少数据丢失的风险。他们有时候还需要在broker 之间转移工作负载,以保证整体负载的均衡。在替换broker 和重新平衡工作负载时,需要非常小心地创建和编辑分区重分配文件(partition reassignment file)并手动执行Kafka 脚本命令。这些操作会明显增加团队的负担。

为了扩展Kafka 服务的运维规模,Pinterest 构建了DoctorKafka,这是一项Kafka 集群自愈和工作负载均衡的服务。DoctorKafka 能够探测到Kafka broker 的故障并自动将故障broker 的负载转移给健康的broker。现在,Pinterest 已经在 GitHub 上将该项目开源。

高层架构

DoctorKafka 由三部分组成,如下图所示:

图 1 DoctorKafka 的高层架构

  • 部署在每个 broker 上的指标收集器(metrics collector),它会定期收集 Kafka 进程和主机的指标,并将其发布到一个 Kafka 主题上。在这里,使用了 Kafka 作为 broker 的状态存储,这样的话,能够简化 DoctorKafka 的搭建过程并减少对其他系统的依赖;
  • 中心化的 DoctorKafka 服务会管理多个集群,分析 broker 的状态指标以探测 broker 的故障,执行集群自愈和负载均衡的命令。DoctorKafka 会将执行的命令记录在另外一个名为“Action Log”主题上;
  • 用于浏览 Kafka 集群状态和执行流程的 Web UI 页面。图 2 展现了两个测试集群的管理界面,图 3 展现了其中一个集群的详细视图。

图 2 DoctorKafka 的前端页面

图 3 DoctorKafka 的集群视图

需要注意的是,DoctorKafka 只会采取有把握的操作,对于不确定的情况,它会给出告警。

DoctorKafka 的实际运行过程

每个 broker 上都会运行一个指标收集器,它会收集 Kafka broker 输入和输出的网络流量指标以及每个副本(replica)的状态。图 4 展现了指标收集器所收集的 broker 的部分状态。即便采用副本配额配置(replication quota setting,在 Kafka 0.10.1 之后可用的特性),主题分区的重分配通常也会带来额外的网络流量并且会影响到指标,因此,指标收集器在收集指标时会明确报告某个主题分区正在进行重分配。

图 4 指标收集器所收集到的 broker 状态

DoctorKafka 服务启动之后,它会首先读取 broker 最近 24 到 48 小时的状态,基于此,DoctorKafka 会推断每个副本工作负载所需的资源。因为 Kafka 工作负载主要是网络密集型的,DoctorKafka 主要关注副本的网络带宽使用情况。

DoctorKafka 在启动之后,会阶段性地检查每个集群的状态。当探测到 broker 出现故障时,它会将故障 broker 的工作负载转移给有足够带宽的 broker。如果在集群中没有足够的资源进行重分配的话,它会发出告警。与之类似,当 DoctorKafka 进行工作负载平衡时,它会识别出网络流量超出配置的 broker,并将工作负载转移给流量更少的 broker,或者是执行更优的领导者选举(leader election)方案来转移流量。

DoctorKafka 已经在 Pinterest 运行了数月之久,并帮助其运维人员管理着 1000 个以上的集群。现在,他们将其开源,对于 Pinterest 的工程师来说,开源是非常重要的事情。读者可以访问该项目的 GitHub 地址获取源码和相关文档。


感谢蔡芳芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-09-03 19:002322

评论

发布
暂无评论
发现更多内容

客户在哪儿AI生产的企业全历史行为数据是ToB大客户营销的最佳抓手

客户在哪儿AI

ToB营销 ToB获客 ToB增长 大客户营销

CMeas度量体系建设:让数据驱动更科学

嘉为蓝鲸

DevOps 研发效能 研发

中国人民大学商学院校友IT互联网+俱乐部会长董哲一行到访亚信科技,共探企业创新之路

亚信AntDB数据库

API签名及加密方式详解

幂简集成

API API签名

告别手动做PPT!这5款AI一键生成PPT软件,你都知道吗?

彭宏豪95

人工智能 效率工具 PPT AIGC AI生成PPT

【YashanDB知识库】YashanDB的JDBC/OCI驱动如何设置字符编码

YashanDB

yashandb 崖山数据库 崖山DB

IT服务管理中的人工智能应用

嘉为蓝鲸

ITSM 大模型 AI Agent 智能服务台

盘点那些国际知名的黑客(下)

网络安全服务

技术 黑客 计算机 黑客攻击 女性

企业如何实现运维故障加速闭环的告警体系建设

嘉为蓝鲸

监控告警 告警管理

促进云边协同发展,我们一直在努力!

天翼云开发者社区

云计算 算力

亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践

亚信AntDB数据库

亚信安慧正式加入多样性算力产业及标准推进委员会

亚信AntDB数据库

某能源自保公司:携手嘉为蓝鲸WeOps,共赴运维转型升级之路!

嘉为蓝鲸

数字化转型 可观测 自动化运维

“夺金”2024中国互联网大会!天翼云斩获三项大奖!

天翼云开发者社区

云计算 互联网大会

热度继续!从零到一,和亚马逊云科技一起快速启动属于你的大模型

科技热闻

快手可灵视频生成大模型全方位测评

快手技术

音视频技术 #大模型

面试官:聊聊你对分库分表的理解?

王磊

Java

KaiwuDB CTO 魏可伟:差异化创新,面向行业的多模架构

KaiwuDB

多模数据库 KaiwuDB 新版本发布

从模糊到清晰:AI 超分引领画质升级

七牛云

视频超分 超分 图像超分

Tele-FLM系列再升级!52B对话模型发布、全球首个万亿单体稠密模型开源

智源研究院

MCtalk·CEO对话×酷家乐:从智能涌现到应用涌现,AI在B端做了哪些事?

ToB行业头条

最佳产品奖,TeleDB拿下!

天翼云开发者社区

数据库 云计算

“分离”“聚合”两手抓,天翼云聚合计算赋能多元化应用场景!

天翼云开发者社区

云计算 天翼云

如何搭建设备巡检二维码?看看这篇教程

草料二维码

城商行:构建自动化运维管理体系,助力数字化转型

嘉为蓝鲸

自动化 自动化运维 运维服务

产品更新 | WeOpsV4.13新增应用归属链路配置,适配用户使用场景

嘉为蓝鲸

weops

赋能未来教育,3DCAT实时云渲染助力深圳鹏程技师学院打造5G+XR实训室

3DCAT实时渲染

实时云渲染 虚拟仿真云教学 虚拟仿真实训教学

华为云Serverless可观测性解决方案打造高效、可靠的云原生应用

华为云PaaS服务小智

Serverless 华为云

DataCanvas Alaya九章元识大模型通过北京市生成式人工智能服务备案

九章云极DataCanvas

大揭秘:百度云提供支持的智能审核机制是什么

爱AI的猫猫头

人工智能 网络安全 内容审核 大模型 办公效率

如何挑选最佳多项目进度管理软件?

爱吃小舅的鱼

项目进度 项目进度管理

Pinterest开源Kafka集群自愈和工作负载均衡工具:DoctorKafka_语言 & 开发_张卫滨_InfoQ精选文章