作者:朱丹阳,腾讯云监控开发工程师
腾讯云消息队列 CKafka 简介
消息队列 CKafka(Cloud Kafka)是基于开源 Apache Kafka 消息队列引擎,提供高吞吐性能、高可扩展性的消息队列服务。消息队列 CKafka 完美兼容 Apache Kafka 0.9、0.10、1.1、2.4 版本接口,在性能、扩展性、业务安全保障、运维等方面具有超强优势,让您在享受低成本、超强功能的同时,免除繁琐运维工作。
产品特点:
CKafka 基本概念和技术特征
01
基本概念
Producer 和 Consumer
Broker 与 Cluster
Topic 与 Partition
02
技术特征
高吞吐
消息队列 CKafka 中存在大量的网络数据持久化到磁盘和磁盘文件通过网络发送的过程。这一过程的性能直接影响 Kafka 的整体吞吐量,主要通过以下几点实现:
1. 高效使用磁盘:磁盘中顺序读写数据,提高磁盘利用率。
2. Broker 的零拷贝(Zero Copy)机制:使用 sendfile 系统调用,将数据直接从页缓存发送到网络上。
3. 减少网络开销
数据持久化
消息队列 CKafka 的数据持久化主要通过如下原理实现:
水平扩展(Scale Out)
Consumer Group
多副本
多副本设计可增强系统可用性、可靠性。
CKafka 架构 & 监控指标
01
架构图 & 监控指标
相关概念:
02
全量指标列表
Period 为 60 秒和 5min
注:上方表格加粗的为核心指标
03
告警核心指标 & 最佳阈值
最佳实践
01
配置告警的核心指标及建议阈值
1. 消息服务 CKafka - 实例
磁盘使用百分比 > 80%
注:代表集群容量使用率,集群容量使用率达到 100% 会被写封禁,影响用户写入,所以需要用户注意提前扩容。
实例连接数百分比 > 80%
注:预防实例连接数过多,导致实例无法建立更多连接造成客户端无法访问 Ckafka 集群。
实例生产带宽百分比 > 80%
注:实例生产带宽百分比 (占用配额百分比),预防生产带宽过高,导致生产消息失败。
实例消费带宽百分比 > 80%
注:实例消费带宽百分比 (占用配额百分比),预防消费带宽过高,导致消费消息失败。
2. CKafka-Topic
Topic 生产流量 > 6000MB
注:按照所选择的时间粒度统计求和,需要根据需求来设置阈值的大小,预防消息生产速度过慢。
Topic 消费流量 > 6000MB
注:按照所选择的时间粒度统计求和,需要根据需求来设置阈值的大小,预防消息消费速度过慢,同时预防客户端出现 Rebalance。
3. CKafka-ConsumerGroup-Topic
主题级别未消费消息个数 > 100000
注:需要根据需求来设置阈值的大小,防止消费数据过慢,导致消息积压,预防业务中消费消息的实时性。
4. CKafka-ConsumerGroup-Partition
消费分组未消费消息数 > 100000
注:需要根据需求来设置阈值的大小,防止消费数据过慢,导致消息积压,预防业务中消费消息的实时性,同时预防客户端出现 Rebalance。
注意:如何避免客户端出现 Rebalance?
消息队列 Kafka 的 Consumer 没有独立线程维持心跳,而是把心跳维持与 poll 接口耦合在一起,如果用户消费出现卡顿会导致心跳超时,引发 Rebalance。
解决方案:
1. 尽量提高消费速度;
2. max.poll.records 设置小一点,这个参数是配置控制心跳的超时事件,可以由客户端自行设置;
3. session.timeout.ms 设置大一点,这个参数控制每次 poll 返回的最大消息数量。
02
如何在腾讯云监控中配置 Dashboard 和告警,高效发现问题
1. 配置告警
https://console.cloud.tencent.com/monitor/overview 进入腾讯云监控,选择告警配置下告警策略,并新建告警策略。
设置消息队列告警:
1. 输入策略名称
2. 输入备注
3. 选择策略类型
4. 选择消息队列 Ckafka 实例
5. 设置告警指标及触发条件
6. 选择告警渠道,包括接收对象,接收渠道,有效时段,接收语言
7. 保存
配置的 Ckafka 实例告警总览
2. 配置 Dashboard
腾讯云监控 Dashboard 提供了消息队列 CKafka 的预设面板,点击 https://console.cloud.tencent.com/monitor/overview 进入腾讯云监控,选择 Dashboard,然后选择预设 Dashboard 下的消息队列 CKafka 预设面板。
设置 CKafka 的 Dashboard:
1. 选择 CKafka 实例
2. 选择 CKafka-Topic
3. 选择 CKafka-ConsumerGroup-Topic
4. 选择 CKafka-ConsumerGroup-Partition
选择完 CKafka 实例,CKafka-Topic,CKafka-ConsumerGroup-Topic,CKafka-ConsumerGroup-Partition 之后,会自动展示出预设的 Dashboard。
消息队列 CKafka 预设面板 总览:
欢迎联系云监控小助手微信号,加群讨论:)