tencent cloud

消息队列 CKafka 版

动态与公告
新功能发布记录
Broker 版本升级记录
公告
产品简介
TDMQ 产品系列介绍与选型
什么是消息队列 CKafka 版
产品优势
应用场景
技术架构
产品系列介绍
开源 Kafka 版本支持说明
与开源 Kafka 对比
高可用
使用限制
地域和可用区
相关云服务
产品计费
计费概述
价格说明
计费示例
按小时付费转包年包月
续费说明
查看消费明细
欠费说明
退费说明
快速入门
入门流程指引
准备工作
VPC 网络接入
公网域名接入
用户指南
使用流程指引
配置账号权限
创建实例
配置 Topic
连接实例
管理消息
管理消费组
管理实例
变更实例规格
配置限流
配置弹性伸缩策略
配置高级特性
查看监控和配置告警
使用连接器同步数据
实践教程
集群资源评估
客户端实践教程
日志接入
开源生态对接
替换支撑路由(旧)
迁移指南
迁移方案概述
使用开源工具迁移集群
故障处理
Topic 相关
客户端相关
消息相关
API 参考
History
Introduction
API Category
Making API Requests
Other APIs
ACL APIs
Instance APIs
Routing APIs
DataHub APIs
Topic APIs
Data Types
Error Codes
SDK 参考
SDK 概述
Java SDK
Python SDK
Go SDK
PHP SDK
C++ SDK
Node.js SDK
连接器相关 SDK
安全与合规
权限管理
网络安全
删除保护
事件记录
云 API 审计
常见问题
实例相关
Topic 相关
Consumer Group 相关
客户端相关
网络问题
监控相关
消息相关
服务协议
服务等级协议
联系我们
词汇表

技术架构

PDF
聚焦模式
字号
最后更新时间: 2026-01-20 15:40:04

架构说明

消息队列 CKafka 版的架构图如下所示:




Producer

消息的生产者,生产的消息可能是网页活动产生的消息、服务日志等信息。生产者通过 push 模式将消息发布到 CKafka 的 Broker 集群。

CKafka 集群

Broker:存储消息的服务器,Broker支持水平扩展,节点数量越多,集群吞吐率越高。
Partition:分区,一个 Topic 可以有多个 Partition,每个 Partition 在物理上对应一个文件夹,用于存储该 Partition 中的消息和索引文件。Partition 可以有多个副本,提升可用性,但也会增加存储和网络开销。
Zookeeper:负责集群的配置管理、leader选举、故障容错等。

Consumer

消息消费者,Consumer 被划分为若干个 Consumer Group,消费者通过 pull 模式从 Broker 中消费消息。

架构原理说明

高吞吐

消息队列 CKafka 版中存在大量的网络数据持久化到磁盘和磁盘文件通过网络发送的过程。这一过程的性能直接影响 Kafka 的整体吞吐量,主要通过以下几点实现:
高效使用磁盘:磁盘中顺序读写数据,提高磁盘利用率。
写 message:消息写到 page cache,由异步线程刷盘。
读 message:消息直接从 page cache 转入 socket 发送出去。
当从 page cache 没有找到相应数据时,此时会产生磁盘 IO,从磁盘加载消息到 page cache,然后直接从 socket 发出去。
Broker 的零拷贝(Zero Copy)机制:使用 sendfile 系统调用,将数据直接从页缓存发送到网络上。
减少网络开销
数据压缩降低网络负载。
批处理机制:Producer 批量向 Broker 写数据、Consumer 批量从 Broker 拉数据。

数据持久化

消息队列 CKafka 版的数据持久化主要通过如下原理实现:
Topic 中 Partition 存储分布
在消息队列 CKafka 版文件存储中,同一 Topic 有多个不同 Partition,每个 Partition 在物理上对应一个文件夹,用于存储该 Partition 中的消息和索引文件。例如,创建两个 Topic,Topic1 中存在5个 Partition,Topic2 中存在10个 Partition,则整个集群上会相应生成5 + 10 = 15个文件夹。
Partition 中文件存储方式 Partition 物理上由多个 segment 组成,每个 segment 大小相等,顺序读写,快速删除过期 segment, 提高磁盘利用率。

水平扩展(Scale Out)

一个 Topic 可包含多个 Partition,分布在一个或多个 Broker 上。
一个消费者可订阅其中一个或者多个 Partition。
Producer 负责将消息均衡分配到对应的 Partition。
Partition 内消息是有序的。

消费者分组(Consumer Group)

消息队列 CKafka 版不删除已消费的消息。
任何 Consumer 必须属于一个 Group。
同一 Consumer Group 中的多个 Consumer 不同时消费同一个 Partition。
不同 Group 同时消费同一条消息,多元化(队列模式、发布订阅模式)。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈