
Kafka 系统在快手有着很广泛的应用,随着其业务的高速发展, Kafka 集群的规模也成指数增长,目前快手 Kafka 集群日消息处理总量达数万亿级别,峰值超过 1 亿 /s。与此同时,快手也面临了很多新问题与技术挑战。本文整理自快手高级架构师、大数据架构团队负责人赵健博在 QCon 北京2019 上的演讲,他介绍了 Kafka 系统在快手的应用实践、遇到的问题以及相应的技术的演进过程。
业务场景
先来看业务场景,在快手,Kafka 被大规模使用着。从场景上看,我们把 Kafka 分成了 3 类集群。第一类,在线集群,Kafka 作为消息中间件,为不同在线业务之间提供异步消息通知服务;第二类,LOG 集群,业务程序直接将 LOG 打给 Kafka,并通过 Kafka 进行传输与收集,由于数据不落地,所以这个过程不能出现由于 Kafka 问题导致业务程序受到影响,这对 Kafka 可用性要求很高,另外,LOG 集群还为重要的实时计算或者模型训练提供数据源;第三类,离线集群,LOG 数据最终的汇聚点,数据会被实时 dump 到 HDFS 中,这部分数据用于离线处理。类似的,离线集群还为次要的实时计算、实时训练提供数据源。
技术演进
第一个阶段:为了支持业务的快速发展,我们首先做了多集群建设以及增加了 Kafka 平滑扩容功能;
第二个阶段,为了保障业务稳定,我们对 Kafka 的可用性进行了改造,经过改造,我们将由于单点宕机发现与恢复的时间从 91s 优化到 6s 左右,有 15 倍的提升;
第三个阶段,为了增加系统的可维护性以及提升读系统的运维效率,我们对数据 Mirror 服务做了集群化建设并开发了资源管理平台;
第四个阶段,为了进一步提升 Kafka 的稳定性、性能,我们做了资源隔离、对 cache 进行了改造、并针对消费者进行了智能限速等。
2019 年,技术迭代还在继续。接下来,我将会介绍其中 5 点的细节:平滑扩容、Mirror 集群化、资源隔离、cache 改造、消费智能限速。


































快手的Kafka系统处理海量消息,达到数万亿级别,峰值超1亿/s。面对高可用性、可维护性的需求,他们经历了多阶段技术演进,包括多集群建设、平滑扩容、Mirror集群化、资源隔离和消费者智能限速等,显著提升了系统稳定性和运维效率。
802

被折叠的 条评论
为什么被折叠?



