腾讯云Kafka海量服务自动化运营实践

本文介绍了腾讯云CKafka的分布式Kafka服务,包括无锁队列优化、异步刷盘等优化措施,提供自动化运营解决方案。文章讨论了如何处理云端CKafka的版本兼容、资源分配、实例动态升降配、负载均衡和分区管理等问题,并介绍了自动化控制中心的架构设计,以应对海量服务的挑战。
摘要由CSDN通过智能技术生成

腾讯云CKafka是基于Apache Kafka 的分布式、高可扩展以及高吞吐的云端Kafka服务。腾讯云CKafka针对开源Kafka进行了多种优化,其中包括无锁队列优化、异步刷盘优化、多版本支持以及GC优化等优化手段,对开源Kafka性能达到了数倍的提高。与用户自己部署Kafka相比,腾讯云CKafka无需用户关心Kafka集群细节,用户无需维护Kafka集群直接使用,同时为用户提供丰富的监控指标。由于腾讯云CKafka与社区Kafka的协议一致,用户只需要够买实例后便可无缝接入。再者,CKafka允许用户动态进行实例的升降配,按需付费。最后腾讯云CKafka与腾讯云存储以及大数据EMR套件打通,使用方便。

当前腾讯云CKafka运行规模已经达到了日消息万亿的级别,同时日吞吐量已经达到了PB级别,单集群最高峰值可达数十亿。

在运营云端CKafka不同集群以及如此繁多的节点时候,我们遇到了的问题可以归纳为以下几点:

1)如何选择云端CKafka版本

2)如何合理的创建分配实例才能实现资源的有效利用

3)怎样实现实例动态升降配

4)如何实现集群的负载均衡

5)怎样合理规划分区的创建、新增以及迁移

下文就针对这五个问题分别阐述腾讯云CKafka是如何解决的。

多版本生产/消费兼容

由于云端面对的用户不同,必然会出现对Kafka不同版本的要求。当前最新Kafka版本已经为1.1.0版本,对于底层存储而言,主要是不同版本会有不同的消息格式。

 

图1. 用户版本的选择

第一种方案是部署多套Kafka集群以满足不同版本的要求,但是这种做法的代价是每当用户购买实例的时候必须提供其使用版本,同时用户必须持续使用这种Kafka版本。否则只能通过重新购买不同版本的实例才可以实现版本的替换。其次在运维过程中,由于每个节点有版本号的特异性,不同版本的节点不允许加入非对应版本的集群。在集群节点调度时不再对集群透明,所以在后续对集群维护的时候也增加了维护成本。

第二种方法也是目前CKafka使用的方法,改造Kafka底层以完成多种消息格式的存储。底层不再拒绝不同版本的消息,根据magic字段获取消息的格式进行相应处理。在不同版本之间的生产/消费进行消息的转换以满足要求。这样用户即使使用不同版本也可以在同一个实例下完成,集群调度也不会有节点特异性的问题。

提高资源利用率

伴随着服务的运营以及越来越多的实例售卖,后端发现集群出现了资源浪费的情况。由于CKafka是按照实例进行售卖,实例售卖又具有两个纬度,分别为带宽与磁盘。每个实例的服务能力会分布在不同节点上,不合理的资源分配将会造成两种资源的浪费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值