开源对比

本文从稳定性、内核能力、治理能力以及使用习惯等方面,对比阿里云云消息队列 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 Manager

  • 服务端自动创建

云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Topic数据,以实现细粒度的权限管控、资源操作审计等安全管控能力。

说明
  • 建议仅在测试场景申请使用,更多信息,请参见自动化创建Topic相关问题

  • 云消息队列 Kafka 版暂不支持使用Kafka CLI方式创建和删除Topic。

命名规范

  • 预留实例:

    支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~64个字符。

  • Serverless实例:

    支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在1~249个字符。

支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在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个字符。

  • Serverless实例:

    只能包含字母、数字和特殊字符“@._*$#^!&-”,限定在1~249个字符。

支持大小写字母、数字、下划线(_)、短划线(-)和英文句号(.),限定在3~249个字符。

过长的资源命名可能导致在其他系统传输过程中受限制,因此云消息队列 Kafka 版限制Group的长度。

删除方式

  • 云消息队列 Kafka 版控制台

  • 云消息队列 Kafka 版OpenAPI

Kafka CLI

云消息队列 Kafka 版默认通过阿里云控制台和OpenAPI管理Group数据,以实现细粒度的权限管控、资源操作审计等安全管控能力。

说明

云消息队列 Kafka 版暂不支持通过Kafka CLI删除Group