在 Apache Pulsar 2.6.0 版本发布后的 2 个月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式发布!
Apache Pulsar 2.6.1 修复了 2.6.0 版本中的诸多问题,改进了一些功能,新增了对 OAuth2 的支持,覆盖 Broker、Pulsar SQL、Pulsar Functions、Go Function、Java Client 和 C++ Client,进一步丰富了 Pulsar 作为云原生流数据平台的功能。
在 Pulsar 2.6.1 版本中,来自社区的 commit 有 102 个,越来越多的小伙伴开始参与到 Pulsar 社区建设中,成为 Contributor 的一员。下面一起来看看 2.6.1 版本有哪些更新吧。
Broker 相关改进
将批处理大小限制为 “maxNumberOfMessages” 和 “ maxSizeOfMessages” 的最小值
在 2.6.0 版本之前,BatchReceive 策略中 maxNumberOfMessages
和maxSizeOfMessages
的最小值不会影响批处理大小。当批量大小大于 consumer 中设置的 receiveQueue
大小时(假设使用的批量大小为 3000,receiveQ 为 500),会出现以下问题:
在 consumer 中使用多主题模式,client 被阻塞,导致不接收任何消息;即使用户在批处理中设置超时策略,client 也不会恢复。
在 2.6.1 版本中,我们把批处理大小设置为 “maxNumberOfMessages” 和 “maxSizeOfMessages” 中的最小值,修复了该问题。
更多详情查看 PR-6865:https://github.com/apache/pulsar/pull/6865。
解决 Key_Shared 中使用粘性 hash range 导致的哈希范围冲突问题
在以前的版本中,当用户在 Key_Shared 订阅模型中使用 “stickyHashRange” 时,consumer 指定的 hash 范围不允许重叠。例如,consumer-1 的哈希范围为:[[0,99],[400,65535]],consumer-2 的哈希范围为:[[100,399]]。
这是因为在 broker 端,没有对 stick hash range 中的 start 和 end 位置进行检查。正常情况下不允许 start 大于 end 的位置。在 2.6.1 版本中,我们加入了相应的 check 机制,来避免出现 hash range 冲突的问题。
更多详情查看 PR-7231:https://github.com/apache/pulsar/pull/7231。
修复获取 lookup 权限的错误
当前,当 Pulsar AuthorizationService 检查 lookup 权限时,拥有 canProducer
或 canConsumer
角色应该具备可以 canLookup
的能力,但实际上并没有该能力。代码如下:
java try { return canLookupAsync(topicName, role, authenticationData) .get(conf.getZooKeeperOperationTimeoutSeconds(), SECONDS); }
如果 canProduce
或 canConsume
方法抛出异常,canLookup
只会抛出该异常,不检查其他权限。
在 2.6.1 版本中,使用 canLookupAsync
代替原来的行为,更多详情查看