关于 Apache Pulsar

Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。
GitHub 地址:http://github.com/apache/pulsar/

导语

各位小伙伴们,2021 年 7 月 Pulsar 社区月报来啦!

感谢以下各位社区成员本月对 Pulsar 项目的支持,让 Apache Pulsar 继续发光发热!(排名不分先后,仅限于 GitHub 代码仓库提交记录,看看你有没有上榜 ????????):

Technoboy-、ericsyh、merlimat、codelipenghui、wangjialing218、sursingh、yangl、cimura、mattisonchao、hangc0276、urfreespace、yonyong、newur、wuzhanpeng、sh05、bem3、murong00、linlinnn、kaushik-develop、aloyszhang、tuteng、wolfstudy、abhilashmandaliya、wuzhanpeng、Jason918、GabrielNicolasAvellaneda、aahmed-se、danielorf、congbobo184、massakam、ravi-vaidyanathan、danielsinai、BewareMyPower、liangyepianzhou、lhotari、315157973、Anonymitaet、freeznet、zliang-min、rfigueroa、Demogorgon314、jerrypeng、eolivelli、RobertIndie、kaushik-develop、equanz、kaushik-develop、gaoran10、nlu90、Shoothzj、horizonzy、rdhabalia、Demogorgon314、zymap、rfigueroa

重要进展

Admin

Admin:开启 batch 消息加密窥视。
https://github.com/apache/pulsar/pull/11244

Admin:使用 peekMessage 或 getMessageById 向 Admin CLI 暴露更多消息属性来获取消息信息。
https://github.com/apache/pulsar/pull/11279

Broker

Broker:增加 Broker 一阶段压缩循环时间超时配置项。
https://github.com/apache/pulsar/pull/11206

Broker:调整 getDynamicConfigurationDouble 和 DynamicConfigurationBoolean 的实现方式。
https://github.com/apache/pulsar/pull/11171

Broker:清理部分冗余代码。
https://github.com/apache/pulsar/pull/11071

Broker/Bookie:给 Pulsar 进程设置 Dio.netty.tryReflectionSetAccessible=true
https://github.com/apache/pulsar/pull/11138

Broker:删除集群时关闭复制器和复制客户端。
https://github.com/apache/pulsar/pull/11342

Broker:支持设置多个角色进行授权。
https://github.com/apache/pulsar/pull/11341

Broker:删除 Pulsar 集群时关闭 replicator 和 replication client。
https://github.com/apache/pulsar/pull/11342

C++

C++:添加 transaction Admin API getPendingAckInternalStats
https://github.com/apache/pulsar/pull/10725

C++:设置 socket 选项时避免抛出异常。
https://github.com/apache/pulsar/pull/11329

C++:支持在 Windows 操作系统上构建 Pulsar C++ 调试库。
https://github.com/apache/pulsar/pull/11302

Policy

Policy:支持将 Null 设置为命名空间级订阅 TTL。
https://github.com/apache/pulsar/pull/11253

Policy:添加 Redis sink 的使用举例。
https://github.com/apache/pulsar/pull/11222

Go Functions

Go Functions:设置 Go function 运行时的订阅名称。
https://github.com/apache/pulsar/pull/11332

Go Functions:升级 Go 客户端至 0.5.0。
https://github.com/apache/pulsar/pull/11336

Pulsar IO

Pulsar IO:确保 AbstractKafkaSourceRecord 的 ack() 方法没有阻塞以避免死锁。
https://github.com/apache/pulsar/pull/11435

Pulsar IO:允许 Pulsar IO sink connector 使用原生 AVRO 和 JSON 格式。
https://github.com/apache/pulsar/pull/11322

Test

Test:使用  Awaitility 模块来替换 Thread.sleep 方法。
https://github.com/apache/pulsar/pull/11164

Test:给 MaxRequestSizeFilter 增加新的测试。
https://github.com/apache/pulsar/pull/11128

Test:给 ProcessHandlerFilter 增加新的测试。
https://github.com/apache/pulsar/pull/11133

其他

Connector:支持多个 Elasticsearch 主机。
https://github.com/apache/pulsar/pull/10973

NiFi:修复 NarUnpacker 中的并发问题。
https://github.com/apache/pulsar/pull/11343

Tiered-storage:移除不使用的监听器来减少线程池的创建。
https://github.com/apache/pulsar/pull/11215

Website:增加一个本地调试工具用于查阅 Pulsar 网站内容更新。
https://github.com/apache/pulsar/pull/11160

Pulsar Adapters:添加 Apache Pulsar Adapter 2.8.0 的下载链接到下载页面(仅限于源码压缩包)。
https://github.com/apache/pulsar/pull/11247

PIP 85:通过 Pulsar Functions 和 Pulsar connector 的 BaseContext 来暴露 Pulsar 客户端。
https://github.com/apache/pulsar/wiki/PIP-85%3A-Expose-Pulsar-Client-via-Function-Connector-BaseContext https://github.com/apache/pulsar/pull/11056

pulsar-perf:为 pulsar-perf CLI 命令添加缺少的参数。
https://github.com/apache/pulsar/pull/11337

BookKeeper:删除重复的配置。
https://github.com/apache/pulsar/pull/11283

Pulsar Dashboard:移除 Pulsar Dashboard。
https://github.com/apache/pulsar/pull/11284

Python Client:支持复杂的 schema。
https://github.com/apache/pulsar/pull/11400

Monitor: 将 storageLogicalSize 统计指标添加到 TopicStats 和 NamespaceStats
https://github.com/apache/pulsar/pull/11430

Bug 修复

Broker

Broker:修复在使用 CommandSubscribe.getConsumerName() 时没有进行确认的问题。
https://github.com/apache/pulsar/pull/11199

Broker:修复 Broker 重启后 topic 保留策略不生效的问题。
https://github.com/apache/pulsar/pull/11136

Broker:修复在重置游标后,订阅权限不生效的问题。
https://github.com/apache/pulsar/pull/11132

Broker:修改 resetCursor 中 timestamp 的描述。
https://github.com/apache/pulsar/pull/11121

Broker:修复在没有配置 AppendBrokerTimestampMetadataInterceptor 并开启 BrokerEntryMetadata 时,出现 fix publish_time 没有设置的报错。
https://github.com/apache/pulsar/pull/11014

Broker:修复 2.7 分支的 broker 发送限流器。
https://github.com/apache/pulsar/pull/11249

Broker:修复卸载持久分区主题时发生的 NullPointerException 问题。
https://github.com/apache/pulsar/pull/11301

Broker:解决使用分区主题名称获取主题级策略的 issue。
https://github.com/apache/pulsar/pull/11294

Broker:解决压缩中保留密钥的 issue 。
https://github.com/apache/pulsar/pull/11287

Broker:修复使用复制订阅和 Key_Shared consumer 时,broker 泄漏直接内存的问题。
https://github.com/apache/pulsar/pull/11396

Broker:修复内置连接器不存在时发生的 NPE。
https://github.com/apache/pulsar/pull/11385

Broker:删除 topic 后删除 topic 级策略。
https://github.com/apache/pulsar/pull/11316

Client

Client:修复客户端在使用 hasMessageAvailableAsync 和 readNextAsync 时引起的死锁问题。
https://github.com/apache/pulsar/pull/11183

C++ client:移除客户端 namespace 中 std::regex 的使用以避免 C++ core dump 问题。
https://github.com/apache/pulsar/pull/11179

Client:修复 WebSocket 的 TLS 漏洞。
https://github.com/apache/pulsar/pull/11243

Client:修复由于 ConfigurationStoreServers 为空导致集群数据检索失败的问题。
https://github.com/apache/pulsar/pull/11234

Client:避免关闭 consumer 时无限等待。
https://github.com/apache/pulsar/pull/11347

C++ Client:在 ZTSClient 中使用相同的正则表达式代码。
https://github.com/apache/pulsar/pull/11323

Function

Function:降低缓存不一致的概率。
https://github.com/apache/pulsar/pull/11423

Python Function:修复 Python Functions 运行时不支持 tls_validate_hostname 的问题。
https://github.com/apache/pulsar/pull/11087

Functions:修复一些方法使用不准确的问题。
https://github.com/apache/pulsar/pull/11167

Functions:修复 getSinkInfo 没有正确返回 topic 列表的问题。
https://github.com/apache/pulsar/pull/11094

Test

Test:修复硬编码 token 导致鉴权测试失败的问题。
https://github.com/apache/pulsar/pull/11186

Test:对 ZookeeperServerTest 进行简单的重构。
https://github.com/apache/pulsar/pull/11181

Test:修复 PR 11118 中引入的一些错误。
https://github.com/apache/pulsar/pull/11176

Test:修复 LoadBalancerTest 的 flaky test 中 testBrokerRanking 方法偶尔失效的问题。
https://github.com/apache/pulsar/pull/11150

Test:将 ReplicatorTest 测试组修改为 broker,并修复测试问题。
https://github.com/apache/pulsar/pull/11134

Test:修复 TopicFromMessageTest flaky test 中 testMultiTopicConsumerBatchShortName 方法偶尔失效的问题。
https://github.com/apache/pulsar/pull/11125

Test:修复客户端工具测试中 TimeUnit 设置问题。
https://github.com/apache/pulsar/pull/11118

Test:修复  testBrokerRanking flaky test 的问题。
https://github.com/apache/pulsar/pull/11114

Test:修复 2.7 分支的测试用例。
https://github.com/apache/pulsar/pull/11254

Transaction

Transaction:修复在 MLTransactionLog 初始化时可能引起的死锁问题。
https://github.com/apache/pulsar/pull/11194

Transaction:修复与提交和中止标记相关的直接内存泄漏的问题。
https://github.com/apache/pulsar/pull/11407

其他

Compaction:修复从已压缩的 ledger 读取数据时抛出异常的问题。
https://github.com/apache/pulsar/pull/11175

Policy:修复因保留大小策略删除过多 ledgers 的问题。
https://github.com/apache/pulsar/pull/11242

Metrics:修复一些缺失的 replicator 的指标。
https://github.com/apache/pulsar/pull/11264

Ledger:修复了 2.7 分支中 ledger 的任务调度流转逻辑。
https://github.com/apache/pulsar/pull/11226

Build:在 internalGetMessageIdByTimestamp 方法中使用 entryTimestamp 进行到期检查。
https://github.com/apache/pulsar/pull/11220

Common:修复命名空间 bundle 缓存的不一致行为。
https://github.com/apache/pulsar/pull/11346

C++:修复某些编译器中缺少头文件引入的问题。
https://github.com/apache/pulsar/pull/11152

C++:修复 Dockerfile 中的启动下载链接问题。
https://github.com/apache/pulsar/pull/11129

Admin:修复查看消息时 batch size 小于 0 的错误。
https://github.com/apache/pulsar/pull/11301

Admin:修复在创建特定分区的订阅时仅列出为 Partition-0 创建的订阅的问题。
https://github.com/apache/pulsar/pull/11355

CLI:修复在验证批处理源配置时的 pulsar-admin CLI 工具中的问题。
https://github.com/apache/pulsar/pull/11378

活动与干货

活动

•Pulsar Virtual Summit Europe 2021 报名启动[1]


以上就是 2021 年 7 月份的脉动之旅,在此感谢参与周报与博客翻译整理的社区志愿者们:ericsyh、侯盛鑫,本月报内容也是基于上述志愿者的贡献汇总而成,再次感谢!如果你也想参与我们的社区志愿工作,欢迎加入!

Apache Pulsar 社区鼓励大家积极参与开源社区,无论是文档、代码、翻译,还是技术博客,都欢迎大家积极参与,早日成为 Pulsar contributor,一起加油鸭。

 

引用链接

[1] Pulsar Virtual Summit Europe 2021 报名启动: https://hopin.com/events/pulsar-summit-europe-2021
[2] Pulsar Summit 2021 北美峰会 -技术探究专场: https://www.bilibili.com/video/BV1C64y197Db
[3] Pulsar 2.8.0 新增特性概览:独占 Producer、事务等: https://www.bilibili.com/video/BV1zb4y1Q7gT