内容提要
Apache Iggy 是用 Rust 编写的持久化消息流平台,采用线程每核、无共享架构及 io_uring 等技术,强调低尾延迟与高效率。它支持多协议和八种语言 SDK,并提供连接器。项目于 2026 年成为 ASF 顶级项目,0.9.0 版首次支持集群复制。未来将完善集群、开发 Kafka 协议网关并推进 1.0。
延伸解读
从零设计流引擎的取舍
Iggy 并非用另一种语言复刻 Kafka,而是围绕现代硬件重新设计:线程每核、无共享、io_uring、零拷贝和 Direct I/O,目标是降低调度、同步与内存管理开销。这些选择让它在尾延迟和资源效率上有明确取向,但也意味着它更依赖特定内核与运行时环境,读者评估时需关注部署条件是否匹配。
协议与 SDK 降低接入门槛
Iggy 同时提供 TCP、QUIC、WebSocket 和 HTTP,并维护八种语言 SDK,把协议选择视为开发者体验的一部分。对团队而言,这意味着浏览器、边缘应用和后端服务可以共用同一持久化日志模型,减少为不同接入面维护多套产品的成本。不过多协议也带来运维与安全配置的复杂度,需按实际客户端类型取舍。
集群复制刚起步,迁移不必一刀切
0.9.0 是首个支持多节点集群的版本,共识方案从早期 Raft 实验转向 VSR,单节点部署仍保留。项目正在开发 Kafka 协议网关,并借助连接器接入数据库、搜索与湖仓系统,因此团队可在特定边界先试用,而非整体替换现有平台。但集群仍在硬化阶段,生产采用应优先验证复制行为与故障恢复。
Q&A
Apache Iggy 是什么?它主要用什么语言开发?
Apache Iggy 是一个用 Rust 编写的持久化消息流平台,将消息存储在流、主题和分区中,作为仅追加日志,消费者可独立或通过消费者组读取。服务器以单个二进制文件分发,无外部代理或数据库依赖。
Iggy 支持哪些协议和编程语言 SDK?
Iggy 支持 TCP、QUIC、WebSocket 和 HTTP 协议,并提供 Rust、C#、C++、Java、Go、Python、Node.js 和 PHP 八种语言的 SDK。
Iggy 在架构上做了哪些关键选择来降低延迟?
Iggy 采用线程每核、无共享架构,每个 CPU 核心运行独立线程且无共享热路径状态;使用 Linux io_uring 进行磁盘和网络 I/O;由于用 Rust 编写,没有垃圾回收器;还实现了零拷贝数据路径和 Direct I/O,以减少调度、同步、内存管理和 I/O 开销。
Iggy 的集群功能进展如何?用了什么共识算法?
集群是项目最受期待的功能之一。早期实验使用 Raft,后来转向基于 Viewstamped Replication Revisited (VSR) 的共识算法,以匹配高吞吐复制目标。基础工作在 0.7.0 版本落地,0.9.0 是首个设计为多节点集群运行的版本,同时保留单节点模式。
采用 Iggy 是否需要一次性全量迁移?
不需要。项目强调互操作性,社区正在开发 Kafka 协议网关,使现有 Kafka 应用能与 Iggy 协作;连接器生态提供通往数据库、搜索引擎、分析系统和湖仓技术的路径。团队可以在特定边界或工作负载上评估 Iggy,而非整体替换。
如何开始试用 Apache Iggy?
从官方文档开始,用 Docker 或源码运行服务器;使用与你的应用栈匹配的 SDK 构建生产者和消费者;然后用 iggy-bench 在你自己的硬件上测试工作负载。已发布的基准测试站点提供参考,Discord 和开发邮件列表是提问和讨论设计的社区渠道。
Iggy 适合哪些类型的应用场景?
Iggy 面向实时、数据密集型工作负载,当前用例和集成涵盖事件流、日志与可观测性、实时分析、CDC 与数据管道、AI 与代理数据流、视频与 IoT 摄入,以及操作型系统与下游存储之间的大容量数据移动。