升级Kafka的side effect

公司日志系统的Kafka集群多年来一直使用0.8.2版本,当前Kafka已经发展到1.x, 2.x,有必要升级到较高的版本,以使用更新的功能。

本次计划升级至比较稳定的1.1.0版本。

升级步骤

参考官方文档:https://kafka.apache.org/documentation/#upgrade_1_1_0

  1. 每台服务器部署Kafka 1.1.0程序
  2. 修改配置文件,加上
    inter.broker.protocol.version=0.8.2
    log.message.format.version=0.8.2
  3. 逐台关闭0.8.2,启动1.1.0
  4. 全部升级后,修改配置文件,去掉:
    inter.broker.protocol.version=0.8.2
  5. 逐台重启
  6. 检查分区及主分区的分布是否均匀,进行调整

Client端因为分布太广暂时没有升级计划,因此broker的log.message.format.version=0.8.2配置需要一直保留,避免broker做格式转换。

升级效果

1. 可以做到zero downtime平滑升级。

2. 升级的side effect:数据存储量和消费占用带宽都明显减少!

kafka_partition_size.png

从上图可以看出,在生产数据相当的情况下,在broker升级前1GB的log文件保存了12分钟的数据。而在升级后,1GB的log文件保存了接近32分钟的数据。对这个partition而言,存储效率是升级前的2.7倍!

不同的partition提升程度并不相同。整体的提升效果,可以从消费数据量看出。

单机:


kafka_broker_outgoing.png

整个集群:


kafka_cluster_outgoing.png

升级前后的消费数据量相差4倍!

之前部分服务器的监控数据有日志刷新延迟超过100ms的警告,升级后也基本消失。

可见,升级Kafka至1.1.0版本对Kafka集群的磁盘容量、磁盘IO及网络带宽资源的占用都有了明显的减轻。

分析

由于升级前后:

  • producer没有升级
  • 网卡流入流量没有变化
  • 每秒消费消息数没有变化

可以看出存储效率的提升是在broker产生的。而broker cpu使用率没有变化,说明没有发生额外的消息格式的转换。

应该是跟官方文档有提到的下面这个改动有关(我们使用的是snappy压缩):


kafka_notable_change.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转载自http://dataunion.org/?p=9307 背景介绍Kafka简介Kafka是一种分布式的...
    Bottle丶Fish阅读 5,493评论 0 34
  • 1. 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用S...
    尼小摩阅读 1,465评论 0 17
  • 昨天加班比较晚,回到昆明已11点。洗漱完毕直接就睡着了。早上醒来的时候阳光特别好,吃了个早餐,打开电脑把一直想看的...
    荧光卡夫卡阅读 578评论 0 51
  • 大家好,我叫满满,今年6岁了。 我有一群很傻的家人,爷爷,爸爸,妈妈。 我有一个很傻的爷爷。 他什么都不懂,什么都...
    丽荣冰荷阅读 264评论 0 0
  • 同志们好!我是狗哥。狗哥日记第199天。 狗哥每晚七点半更,带你穿越牛熊。狗哥的初衷是,带10万人学会币圈投资。还...
    狗哥日记阅读 304评论 0 3