本文从稳定性、内核能力、治理能力以及使用习惯等方面,对比阿里云云消息队列 Kafka 版与开源Apache Kafka。

稳定性

项目云消息队列 Kafka 版Apache Kafka
磁盘水位磁盘写满删除旧数据。磁盘写满直接宕机。
线程池隔离读冷数据仍可以保证写入基本正常。读冷数据直接导致线程堵塞,数据写入大量失败。
分区规模万级分区仍然可以保证稳定写入。千级分区就会出现大量抖动。
巡检系统针对死锁、宕机等问题进行自动发现和修复。无。
Bug修复及时发现并修复。只能等社区缓慢修复,且通常要等新版发布,周期长。

内核能力

项目云消息队列 Kafka 版Apache Kafka
弹性能力秒级弹缩,业务几乎无感知。小时级弹缩,期间会因为复制流量加大,对集群造成影响。
存储成本专业版提供高可靠云存储,节省大量存储空间。出于可用性和可靠性考虑,业界通常都是3副本存储,存储压力大。

治理能力

项目云消息队列 Kafka 版Apache Kafka
版本升级一键自助升级。手工操作易出错。
Metrics曲线能看到完整Metrics曲线,追踪流量、排查问题必备。只能看到实时Metrics,历史数据较难查看。
堆积告警告警及时发现问题。无。
订阅关系完整的订阅关系。比较简略。
分区状态可以看到完整的状态图。比较简略。
发送消息控制台直接发送消息。只能命令行操作,成本高。
查询消息控制台根据时间或者位点直接查看消息。命令行可以消费,但无法根据位点或者时间直接定位到具体的消息。

使用习惯

云消息队列 Kafka 版在客户端协议层面和开源Apache Kafka完全一致,因此基于开源版本开发的应用和代码可以无缝迁移到云消息队列 Kafka 版。在通信协议完全兼容的前提下,为了提供更丰富的消息管控和治理功能,云消息队列 Kafka 版会对使用习惯作出一些限制,具体说明如下。

项目云消息队列 Kafka 版Apache Kafka差异原因
Topic
创建方式
  • 云消息队列 Kafka 版控制台
  • 云消息队列 Kafka 版OpenAPI
  • Kafka CLI(默认不开启)
  • 服务端自动创建(默认不开启)
  • Kafka CLI
  • Kafka Manager
  • 服务端自动创建
云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Topic数据,以实现细粒度的权限管控、资源操作审计等安全管控能力。
说明 建议仅在测试场景申请使用,更多信息,请参见自动化创建Topic相关问题
命名规范支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~64个字符。支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~249个字符。过长的资源命名可能导致在其他系统传输过程中受限制,因此云消息队列 Kafka 版限制Topic长度。
删除方式
  • 云消息队列 Kafka 版控制台
  • 云消息队列 Kafka 版OpenAPI
  • Kafka CLI
  • Kafka Manager
云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Topic数据,以实现细粒度的权限管控、资源操作审计等安全管控能力。
说明 云消息队列 Kafka 版暂不支持通过开源方式删除Topic。
Group
创建方式
  • 云消息队列 Kafka 版控制台
  • 云消息队列 Kafka 版OpenAPI
  • 服务端自动创建(默认不开启)
服务端自动创建云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Group数据,以实现细粒度的权限管控、资源操作审计、订阅组堆积告警监控等能力。
重要 如需开源方式创建Group,请参见自由使用Group。开启后则无法再使用上述功能。
命名规范支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~64个字符。支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~249个字符。过长的资源命名可能导致在其他系统传输过程中受限制,因此云消息队列 Kafka 版限制Group的长度。
删除方式
  • 云消息队列 Kafka 版控制台
  • 云消息队列 Kafka 版OpenAPI
Kafka CLI云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Group数据,以实现细粒度的权限管控、资源操作审计等安全管控能力。
说明 云消息队列 Kafka 版暂不支持通过开源方式删除Group