本文介绍了Java客户端和Sarama Go在数据层面和管控层面的兼容性详情。
兼容性说明
实例类型 | API类型 | 说明 |
V3系列实例 | 数据层面 | Java客户端从0.10.2.0-3.7.0均兼容V3系列实例,Sarama Go 客户端从1.20.0 - 1.42.1版本均兼容V3系列实例。 |
管控层面 | 常用的操作均能通过Admin本身的API能力或者OpenAPI的能力兼容。 | |
V2系列实例 | 数据层面 | V2实例的云存储Topic不支持幂等和事务能力,其余数据面均兼容。V2实例的Local Topic类型可以兼容所有的 API。 |
管控层面 | 客户常用的操作均能通过Admin本身的API能力或者OpenAPI的能力兼容。 |
Java客户端兼容性测试
Producer
API名称 | 作用 | V2系列实例支持详情 | V3系列实例支持详情 |
send | 发送消息 | 支持 | 支持 |
initTransactions | 初始化事务 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
beginTransaction | 开启事务 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
sendOffsetsToTransaction | 用于在相同的事务中提交消息和消费者的偏移量 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
commitTransaction | 提交事务 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
abortTransaction | 废弃事务 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
flush | 将Buffer中所有的消息都发送到服务端 | 支持 | 支持 |
partitionsFor | 获取Topic的元数据信息 | 支持 | 支持 |
enable.idempotence | 消息幂等 | 2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持 | 支持 |
生产者压缩算法:
压缩算法 | V2系列实例支持详情 | V3系列实例支持详情 |
gzip | 支持 | 支持 |
snappy | 支持 | 支持 |
lz4 | 支持 | 支持 |
zstd | 0.10.x版本实例不支持,2.x版本实例支持 | 支持 |
Consumer
API名称 | 作用 | V2系列实例支持情况 | V3系列实例支持情况 |
subscription | 以 | 支持 | 支持 |
assign | 以 | 支持 | 支持 |
unsubscribe | 取消订阅 | 支持 | 支持 |
poll | 拉取消息 | 支持 | 支持 |
commitSync | 同步提交位点 | 支持 | 支持 |
commitAsync | 异步提交位点 | 支持 | 支持 |
seek | 设置Consumer下一次Poll的位置 | 支持 | 支持 |
seekToBeginning | 将Consumer下一次Poll的位置设置为partition的起始位点 | 支持 | 支持 |
seekToEnd | 将Consumer下一次Poll的位置设置为partition的最终位点 | 支持 | 支持 |
position | 获取下一条Fetch的消息位点 | 支持 | 支持 |
committed | 获取已经提交了的位点信息 | 支持 | 支持 |
partitionsFor | 获取Topic的元数据信息 | 支持 | 支持 |
listTopics | 获取所有的Topic的元数据信息 | 支持 | 支持 |
offsetsForTimes | 根据时间戳查找消息的Offset | 支持 | 支持 |
beginningOffsets | 获取partition的起始位点 | 支持 | 支持 |
endOffsets | 获取partition的最终位点 | 支持 | 支持 |
groupMetadata | 获取Group的元数据信息 | 支持 | 支持 |
enforceRebalance | 强制使当前Group执行一次 Rebalance | 支持 | 支持 |
Admin
API名称 | 作用 | V2系列实例支持情况 | V3系列实例支持情况 | 是否可被OpenAPI替代 |
createTopics | 创建Topic | 支持,使用Admin工具支持创建Local存储的Compact topic 和Cloud存储的 Topic。 其中创建Local存储的Compact Topic的时候只支持下列参数:
创建Cloud存储的 Topic的时候只支持下列参数:
| 支持,使用Admin工具支持创建Cloud存储的Topic。 其中创建Cloud 存储的Topic的时候只支持下列参数:
| |
deleteTopics | 删除Topic | 不支持 | 不支持 | |
ListTopics | 列举出Topic | 支持 | 支持 | |
describeTopics | 获取Topic的部分信息 | 支持 | 支持 | |
createAcls | 创建ACL | 不支持 | 不支持 | |
deleteAcls | 删除ACL | 不支持 | 不支持 | |
describeConfigs | 查看Topic、Group等配置信息 | 支持 | 支持 | |
alterConfigs | 修改Topic等配置 | 不支持 | 不支持 | |
createPartitions | 给某个Topic增加分区数量 | 不支持 | 不支持 | |
deleteRecords | 删除某一个分区的消息 | 云存储Topic不支持,Local存储 Topic支持 | 支持 | 否 |
listConsumerGroups | 列出所有的消费者组 | 支持 | 支持 | |
listConsumerGroupOffsets | 列出消费者组的位点 | 支持 | 支持 | |
deleteConsumerGroupOffsets | 删除消费者组的位点 | 不支持 | 支持 | 否 |
deleteConsumerGroups | 删除消费者组 | 支持 | 支持 | |
listOffsets | 获取指定Topic分区的最新和最旧Offset | 支持 | 支持 | 是 |
alterConsumerGroupOffsets | 修改Consumer Group 的 offset | 支持 | 支持 | 是 |
Sarama Go客户端兼容性测试
Producer
功能 | V2系列实例支持情况 | V3系列实例支持情况 |
普通消息发送 | 支持 | 支持 |
幂等消息 | 支持2.2.x和2.6.x的Local存储Topic,云存储Topic不支持 | 支持 |
事务 | 支持2.2.x和2.6.x的Local存储Topic,云存储Topic不支持 | 支持 |
生产者压缩算法:
压缩算法 | V2系列实例支持情况 | V3系列实例支持情况 |
gzip | 支持 | 支持 |
snappy | 支持 | 支持 |
lz4 | 支持 | 支持 |
zstd | 0.10.x版本实例不支持,2.x版本实例支持 | 支持 |
Consumer
功能 | V2系列实例支持情况 | V3系列实例支持情况 |
| 支持 | 支持 |
| 支持 | 支持 |
事务隔离级别ReadUncommitted ReadCommitted | 支持 | 支持 |
rebalance | 支持 | 支持 |
已知问题
当Topic新增分区时,Sarama Go客户端无法感知并消费新增分区,需要客户端重启后,才能消费到新增分区。
当Sarama Go客户端同时订阅两个以上的Topic时,有可能会导致部分分区无法正常消费消息。
当Sarama Go客户端的消费位点重置策略设置为
Oldest(earliest)
时,如果客户端宕机或服务端版本升级,由于Sarama Go客户端自行实现OutOfRange机制,有可能会导致客户端从最小位点开始重新消费所有消息。