360 智汇云 Kafka 云原生架构演进

在企业数字化建设持续深入的今天,消息系统早已不只是基础组件,而是支撑日志采集、业务解耦、流式处理、实时分析等核心场景的重要底座。

随着业务规模不断扩大,传统 Kafka 架构在扩展效率、资源利用率以及消费积压场景下的稳定性方面,逐渐暴露出挑战。围绕这些问题,360 智汇云中间件团队基于AutoMQ,完成了 Kafka 消息服务的云原生架构演进。

这篇文章将结合 360 智汇云的实际落地经验,分享我们在 Kafka 云原生演进中的思考、选型与实践。

一、为什么传统 Kafka 架构越来越"吃力"?

Kafka 一直是业界最主流的消息中间件之一,生态成熟、协议稳定、应用广泛。但在超大规模场景下,传统 Kafka 架构的一些天然限制也会越来越明显。

1. 扩展性差,扩容周期长

当 Kafka 集群接近容量上限时,扩容往往不是"加几台机器"这么简单,而是一个跨团队、跨流程的系统工程:

容量评估、预算申请、资源协调、节点部署、副本迁移、运行观察,每一个环节都需要时间。现实中,一个完整扩容周期通常以"周"为单位。

问题的根源在于,传统 Kafka 是典型的有状态架构。Broker 本地磁盘存储了大量 Partition 数据,新增节点后必须进行跨网络数据迁移,才能实现负载均衡。数据规模越大,迁移耗时越长,少则数小时,多则数天。与此同时,迁移期间还可能引发性能抖动。

为了保障高峰期容量,很多集群还不得不长期预留较大冗余,这也进一步拉低了资源利用率。

2. 冷读拖垮集群写入

除了扩展性,另一个更容易在生产环境中放大的问题,是冷读对写入的影响

以日志、埋点、实时处理等典型场景为例,业务经常会出现新增订阅、历史回溯、消费者故障恢复等情况。这类场景会触发大量历史数据读取,也就是常说的"追赶读"或"冷读"。

在传统 Kafka 架构下,冷读往往会带来两个连锁反应:

首先是 PageCache 污染。冷数据进入 PageCache 后,会挤占热点数据原本占用的内存空间,导致原本可以直接命中内存的实时消费,也开始频繁触发磁盘 I/O。

其次是网络线程阻塞。Kafka 的零拷贝机制依赖 sendfile 系统调用,在冷数据读取场景下,这一调用可能长时间阻塞网络线程。而 Kafka 的读写路径又共享同一套线程资源,于是冷读压力会进一步传导到写入侧,影响整个集群中其他 Topic 的生产性能。

这是 Kafka 已知的架构缺陷(KAFKA-7504),至今未被根本解决。很多团队都遇到过类似现象:高峰期消费积压增加,随后写入 P99 延迟飙升,甚至影响到无关业务。

对于企业来说,这不仅是架构问题,更是业务体验问题。


二、AutoMQ 的技术选型与架构优势

面对这些挑战,我们希望找到一种既能保持 Kafka 生态兼容性 ,又能真正发挥云原生弹性能力的新架构。

在调研过程中,基于对象存储的 Diskless Kafka 架构进入了我们的视野。AutoMQ 的核心特点,包括存算分离、读写路径隔离、分钟级扩缩容等,正好对应了传统 Kafka 在大规模场景下最突出的几个痛点。

更重要的是,360 智汇云本身已经具备较完善的云原生基础设施能力。

例如,PoleFS 是 360 自研的云原生分布式存储系统,兼容 POSIX 协议,支持 Kubernetes CSI 标准,可在容器环境中为有状态应用提供完整的 PVC 持久卷管理能力。与此同时,智汇云也具备标准 S3 对象存储服务。这意味着,从基础设施角度看,我们已经具备了支撑 AutoMQ 落地的关键条件。

1. 100% 兼容 Kafka 协议,客户端零改造

对于企业客户来说,替换消息系统最大的顾虑之一,往往不是性能,而是改造成本。

AutoMQ 基于 Apache Kafka 源码演进,在保留 Kafka 计算层与协议层的同时,对底层存储架构进行了云原生重构。这意味着:

各业务部门现有的所有客户端代码、自研 SDK、消费者组配置等无需任何改动。

从客户视角看,这种替换几乎是"无感"的;从平台视角看,则能在不牺牲生态兼容性的前提下,获得更强的弹性与更好的资源效率。

2. 按需扩容,理论吞吐无上限

AutoMQ 的核心架构变化是存算分离------数据持久化在对象存储中,Broker 变为无状态节点。

对比项 Apache Kafka AutoMQ
Broker 状态 有状态,数据在本地磁盘 无状态,数据在对象存储
扩缩容 数小时 ~ 数天(需迁移数据) 分钟级(仅迁移元数据)
Partition 迁移 跨网络复制数据 秒级完成
负载均衡 手动 reassign 内置自动重平衡
资源利用率 长期预留冗余 按需伸缩

对业务的直接影响:扩容不再需要跨部门沟通协调、等待机器到位和数据迁移,集群可以根据负载自动伸缩。

3. 冷热隔离,冷读不再影响写入

AutoMQ 在架构层面将数据路径拆分为三条独立通道:

路径 机制 说明
写入 Direct IO 绕过 PageCache 冷读无法干扰写入
实时消费(热读) WAL + 内存缓存 低延迟,毫秒级
追赶读(冷读) 对象存储 + Prefetch 独立通道,不与写入争抢资源

这种设计的价值非常直接:即使下游消费者出现大规模积压、需要快速回补历史消息,生产写入仍然可以保持稳定,不会再出现"消费追赶把写入拖慢"的情况。


三、性能测试

**1.**基准性能测试

在 8 节点 Broker 集群上,使用业界标准的 OpenMessaging Benchmark 框架,分别以 100 MiB/s 和 500 MiB/s 两个负载级别进行压测(acks=all,确保数据持久化后再返回成功):

发送延迟(ms)

百分位 100 MiB/s 500 MiB/s
Avg 1.28 1.51
P50 0.99 0.84
P95 1.55 2.83
P99 11.98 19.13

端到端延迟(ms)

百分位 100 MiB/s 500 MiB/s
Avg 2.2 22.55
P50 2.0 19.0
P95 3.0 46.0
P99 14.0 65.0

2. 追赶读隔离测试

我们在 2 节点 Broker 集群中,以 100 MiB/s 吞吐持续发送数据。在累计发送 100 GiB 数据后,待积压规模超过内存缓存,再启动消费者从最早位点开始消费。

测试结果显示:

在追赶读发生过程中,生产侧吞吐与延迟基本保持稳定,没有出现明显抖动;与此同时,追赶读峰值速率达到约 461 MiB/s,能够较快完成积压消化。

这说明 AutoMQ 的读写隔离设计在实际场景中是有效的。

3. 弹性扩容测试

我们还验证了 AutoMQ 的应急弹性能力。具体的测试场景为:集群初始只有 1 个 Broker,启动 OpenMessaging 直接将发送流量设置为 1 GiB/s,此时应急扩容到 16 个 Broker,观察从扩容到新 Broker 到自动承载流量的耗时。测试结果表明,从应急扩容,到节点自动承担流量,大约耗时4分钟:

|--------------------|------|----------|--------------------|--------|
| 分析项 | 监控告警 | 批量扩容 | Auto Balancing | 总计 |
| 0 -> 1 GiB/s 弹性耗时 | 60s | 60s | 120s | 4 min |

四、落地案例

1. 生产部署架构

每个 AutoMQ 集群配备一个 HA 备用集群,定时同步集群元数据。生产集群通过实时写检测持续监控健康状态,一旦检测到异常,自动将集群 DNS 解析切换到备用集群,同时修改 Endpoint 服务返回的集群地址。备用集群无需预先承载数据,只需在切换时快速扩容即可。

PoleFS 在容器环境中为有状态应用提供完整的 PVC 持久卷管理能力,具备多副本高可靠的特性,用于存储日志及 Controller 的 Checkpoint 元数据。

客户端有域名访问和 Endpoint 服务两种方式支持服务端的 HA 故障切换。

域名访问

客户端通过域名访问集群,并在客户端配置 metadata.recovery.strategy=rebootstrap(Kafka KIP-899),当原集群故障后,客户端自动重新初始化连接地址完成集群切换。

Endpoint 访问

在域名访问的方式下,由于 DNS 缓存,存在分钟级别的故障恢复时间。客户端可以订阅 Endpoint 服务,定时请求或监听集群连接地址,当客户端监测到 Endpoint 服务返回的集群地址发生变更后,主动触发 Client 端重启。

2. 日志检索平台改造

**业务场景:**线上服务的统一日志检索平台,所有服务的运行日志通过 Kafka 收集,统一写入 Elasticsearch,业务基于 ES 做日志检索。

**业务痛点:**在业务高峰期时,消息积压达到 10 亿条、约 200 GB,集群写入 P99 飙升到约 10 秒,日志检索的及时性无法保障。

Kafka 常被用于削峰填谷,消息堆积本身是正常现象,关键在于消费者能否快速消化这些积压数据。Apache Kafka 的传统架构下,冷读会触发 Broker 磁盘 I/O,显著拖慢消费速率。

改造后带来的收益主要体现在两个方面。

第一是成本收益。

在业务高峰期,仅使用 304C 16GB Pod,就承载住了峰值 1.4 GB/s 的业务流量。综合统计后,硬件资源成本相比传统 Kafka 方案降低约 50%

第二是性能收益。

切换前,业务高峰期峰值积压约为 10 亿条 消息、约 200 GB,生产 P99 延迟约 10s;切换后,峰值积压下降约 40 倍,降至约 5 GB,生产 P99 延迟下降至约 500ms

从吞吐监控可以看到,切换后的日志检索集群在业务高峰期峰值吞吐达到 1.4 GB/s,写入曲线平滑无毛刺。

切换后的日志检索集群吞吐监控

切换 AutoMQ 前的 Consumer Lag

切换 AutoMQ 后的 Consumer Lag (积压下降 40 倍)

五、写在最后

从传统裸金属 Kafka 到云原生消息架构,这不仅是一次技术栈升级,更是消息服务能力的一次整体跃迁。

对技术团队来说,AutoMQ 带来了更高的弹性、更稳定的读写隔离能力,以及更轻量的运维模式。对企业客户来说,则意味着更低的接入门槛、更强的峰值承载能力,以及更具竞争力的资源成本。

360 智汇云已经在生产环境中验证了这一路线的可行性。未来,我们也将持续推动 AutoMQ 在更多业务场景中的落地,进一步释放云原生 Kafka 架构的价值,为企业提供更高性能、更高稳定性、更高性价比的消息服务能力。

相关推荐
AI服务老曹2 小时前
异构计算时代的架构突围:基于 Docker 的 AI 视频平台如何实现 X86/ARM 与 GPU/NPU 全兼容(源码交付)
人工智能·docker·架构
returnthem4 小时前
K8S核心组件
云原生·容器·kubernetes
小陈工12 小时前
2026年3月26日技术资讯洞察:WebAssembly崛起、AI代码质量危机与开源安全新挑战
人工智能·python·安全·架构·开源·fastapi·wasm
一叶飘零_sweeeet15 小时前
DDD 领域驱动设计:从战略到战术,终结微服务拆分的所有混乱
微服务·架构·ddd领域驱动设计
Gauss松鼠会15 小时前
【GaussDB】LLVM技术在GaussDB等数据库中的应用
大数据·数据库·架构·数据库开发·gaussdb·llvm
landuochong20015 小时前
OpenClaw 架构文档
人工智能·架构·openclaw
架构师沉默16 小时前
程序员如何避免猝死?
java·后端·架构
码路高手16 小时前
Trae-Agent的Patch逻辑
人工智能·架构
csdn_aspnet17 小时前
GitOps宣言:Kubernetes配置的版本化革命
云原生·容器·kubernetes·gitops