关于 Apache Pulsar

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

导语

各位小伙伴们,2021 年 1 月 Pulsar 社区月报来啦!新年伊始,Pulsar 有哪些新年新气象呢?和我们一起开看看吧。

感谢以下各位社区成员本月对 Pulsar 项目的支持,让 Apache Pulsar 继续发光发热!(排名不分先后,看看你有没有上榜 ????????):


@zymap、@Renkai、@congbobo184、@RobertIndie、@eolivelli、@315157973、@rdhabalia、@BewareMyPower、@freeznet、@codelipenghui、@ hrsakai、@k2la、@xxxxpenny、@Jennifer88huang 、@ Tango2018cc 、@ Bklyn 、@JipeiWang、@gaoran10、@jerrypeng、@lhotari、@phijohns-tibco、@merlimat、@Shoothzj、@ivankelly、@MarvinCai、@sijie、@massakam、@tuteng、@nodece、@saosir、@aloyszhang、@z2665、@hangc0276、@dockerzhang、@flowchartsman、@tongsucn、@ nodece、@wangjialing218、@WJL3333、@geomagilles、@michaeljmarshall、@ mpfz0r、 @yufan022、@Anonymitaet 


产品更新

Apache Pulsar 2.6.3 发布。

重要进展

PIP

PIP-45: 增加 ​​MetadataCache​​实现。 

https://github.com/apache/pulsar/pull/9148 

PIP-75: 将 Google Protobuf 替换为 LightProto。 

https://github.com/apache/pulsar/pull/9046 

PIP-76:在 PIP-17 的基础上,流卸载可将数据卸载与 ledger rollover 分离,并尽可能卸载缓存的数据。此外,提供了一种灵活的方法来控制数据卸载行为。 

https://github.com/apache/pulsar/wiki/PIP-76%3A-Streaming-Offload

Pulsar Functions

Pulsar Functions: Pulsar Functions 支持包命令。 

https://github.com/apache/pulsar/pull/8973 

Pulsar Functions: 支持使用包名称创建和更新 source。 

https://github.com/apache/pulsar/pull/8988

Function: 将指标服务器添加到 Go Function 中。 

https://github.com/apache/pulsar/pull/9318 

Broker

Broker: 为 namespace-level 策略添加 ​​maxTopicsPerNamespace​​ 限制。 

https://github.com/apache/pulsar/pull/9042 

Pulsar-broker-common: 将 Additional Servlet 模块移至 Pulsar broker 通用模块。 

https://github.com/apache/pulsar/pull/9164 

Broker: 添加命令以刷新 Pulsar broker 中的身份验证数据。 

https://github.com/apache/pulsar/pull/9064 

Broker: 支持获取 ​​MaxProducer​​ 的应用策略。 

https://github.com/apache/pulsar/pull/9293 

Broker: Broker 资源使用元数据存储 API。 

https://github.com/apache/pulsar/pull/9346 

Broker: 使 BookKeeper Shell 对用户更加友好。 

https://github.com/apache/pulsar/pull/9281 

Broker: 集群资源使用元数据存储 API。 

https://github.com/apache/pulsar/pull/9338 

Broker: 支持从 ​​publish​​ 回调的 entry 数据中获取元数据。 

https://github.com/apache/pulsar/pull/9257 

Authentication

支持具有相同身份验证方法名称的链式身份验证。因此,用户可以使用相同的身份验证方法名称配置多个身份验证提供者。

Authentication: 添加包管理服务的身份验证操作。 

https://github.com/apache/pulsar/pull/8893 

Client

C++ Client:公开 C++ 客户端的端到端加密接口,促使其他客户端(如 Python 客户端或 Node.js 客户端)支持端到端加密。 

https://github.com/apache/pulsar/pull/9074

C++ Client: 通过 C ++ client 的 ​​ListenerName​​ 添加广播地址搜寻。 

https://github.com/apache/pulsar/pull/9119

Client: 支持 JSON 格式的 token。 

https://github.com/apache/pulsar/pull/9313 

Transaction

Transactions: 实现 transaction 超时。 

https://github.com/apache/pulsar/pull/9229 

Transactions: 实现 transaction buffer 的 stable position 和 ​​lowWaterMark​​。 

https://github.com/apache/pulsar/pull/9195 

其他

Interceptor: 跳过 ​​MediaType.MULTIPART_FORM_DATA​​ 的拦截器。 

https://github.com/apache/pulsar/pull/9217 

Pulsar: 在 ​​pulsar-common​​ 模块中启用 spotbug 检查。 

https://github.com/apache/pulsar/pull/9016 

Pulsar: 支持 topic 级别 replicator 的调度速率策略。 

https://github.com/apache/pulsar/pull/9175

Storage: 将 ledger 滚动检查设为内部任务。 

https://github.com/apache/pulsar/pull/8946 

Stats: 添加一个新指标,监控 ​​mark-delete​​ 位置是否超前。 

https://github.com/apache/pulsar/pull/8930 

Security: 添加身份验证指标。 

https://github.com/apache/pulsar/pull/9244 

Admin: 在 ​​PulsarAdmin​​​ 中延迟初始化 ​​PulsarAdminTool​​。 

https://github.com/apache/pulsar/pull/9312 

Functions Worker: 支持通过 ​​bin/pulsar​​ 初始化分布式日志 namespace 元数据。

https://github.com/apache/pulsar/pull/8781 

Bookie: 将 BookKeeper 升级到 4.12.1 版本,允许 Pulsar 使用 Bookie ID。 

https://github.com/apache/pulsar/pull/9019 

在 ​​MetadataStore​​​ 中实现 ​​CoordinationService​​ 抽象:

•锁定管理;•选出领导者模式;•全局唯一序列号生成器

Topic Policy:支持获取  ​​InactiveTopic​​ 的应用策略。 

https://github.com/apache/pulsar/pull/9230 

Plugin: 使用默认的 ASF 配置创建 Source 的 TAR 包。 

https://github.com/apache/pulsar/pull/9184 

Bug 修复

Broker

Broker: 修复 peek 消息元数据时不跳过 broker entry 元数据的问题。 

https://github.com/apache/pulsar/pull/9255 

Broker: 修复无法自动创建系统 topic 的问题。 

https://github.com/apache/pulsar/pull/9272 

Broker: 修复在用户未指定值的情况下,namespace 级别策略返回不正确的默认值的问题。 

https://github.com/apache/pulsar/pull/9149 

Broker: 修复由于 ​​StampedLock​​​不可重入且 ​​ConcurrentOpenHashMap​​​ 的 ​​foreach​​ 方法获得读锁定而导致卸载 namespace 捆绑被阻塞的问题。 

https://github.com/apache/pulsar/pull/9116 

Broker: 修复当 ​​MultiTopicsConsumerImpl​​ 收到空值消息时的 NPE。 

https://github.com/apache/pulsar/pull/9113 

Broker: 修复在启用 KoP 的情况下,启动 Pulsar broker 时产生的 ​​ConcurrentModificationException​​ 错误。 

https://github.com/apache/pulsar/pull/9088 

Broker: 修复在卸载多个 topic 后,Pulsar broker 每次只使一条消息过期的问题。

https://github.com/apache/pulsar/pull/9083 

Broker: 修复当获取不存在的 topic 分区元数据时,返回错误值的问题。 

https://github.com/apache/pulsar/pull/8818 

Broker: 处理重定向请求的 web application 异常。 

https://github.com/apache/pulsar/pull/9228 

Broker: 修复当 namespace 不存在时创建主题出错时提示错误信息的问题。 

https://github.com/apache/pulsar/pull/9223 

Broker: 修复本地/全局 ZooKeeper 滥用的问题,并在 ​​MockedPulsarServiceBaseTest​​ 为本地/全局提供不同的 ZooKeeper。 

https://github.com/apache/pulsar/pull/9222 

Broker: 修复不能在 namespace 级别禁用 ​​maxConsumersPerTopic​​ 的问题。 

https://github.com/apache/pulsar/pull/9214 

Broker: 修复 ​​ServerCnx​​ 中的生产者/消费者映射竞态条件的问题。 

https://github.com/apache/pulsar/pull/9256 

Broker: 修复 ​​ResponseHandlerFilter.java​​ 中禁用拦截器的问题。 

https://github.com/apache/pulsar/pull/9252 

Broker: 修复在禁用 topic 自动创建的情况下,主 broker 想要订阅分区的非持久 topic 时发生的问题。 

https://github.com/apache/pulsar/pull/9107 

Client

C++ Client: 修复 consumer 重复发送 ​​redeliverMessages​​ 的问题。 

https://github.com/apache/pulsar/pull/9072 

C++ Client: 修复由非虚拟析构函数引起的编译问题。 

https://github.com/apache/pulsar/pull/9106 

C++: 修复 ​​ServerError​​ 在日志中未转换为字符串的问题。 

https://github.com/apache/pulsar/pull/9277 

C++: 修复 ​​UnAckedMessageTracker​​ 无法正确处理批处理消息的问题。 

https://github.com/apache/pulsar/pull/9170 

C++: 修复部署 ​​AcknowledgeCumulative​​操作时 C++ 客户端未清除以前的消息的问题。

https://github.com/apache/pulsar/pull/8606 

Client: 修复创建 sink 但未配置 sink 名称时发送用户不友好的错误消息问题。 

https://github.com/apache/pulsar/pull/9131 

Client: 修复有关传入消息大小的问题。 

https://github.com/apache/pulsar/pull/9182 

Admin

Admin: 修复 URI 解析不支持多个地址的问题。 

https://github.com/apache/pulsar/pull/9191 

Admin: 修复 Pulsar Admin 中潜在的 HTTP get 操作挂起的问题。 

https://github.com/apache/pulsar/pull/9203 

Admin: 修复 namespace 的最大主题数配置不起作用的问题。 

https://github.com/apache/pulsar/pull/9193 

pulsar-admin: 因启用 TLS 的集群不需要 ​​service-url​​​,将 ​​service-url​​ 设置为非必填项。 

https://github.com/apache/pulsar/pull/9127 

PulsarAdmin: 解决 ​​function-name​​ API 返回错误类型的问题。 

https://github.com/apache/pulsar/pull/9115 

Dependency

Dependency: 删除 Spring Plugins 仓库。 

https://github.com/apache/pulsar/pull/9280 

Dependency: 删除 hbase-server 依赖。

https://github.com/apache/pulsar/pull/9278 

Test

Test: 解决 ​​ManagedLedgerTest.testAsyncUpdateProperties()​​中的竞态条件的问题。 

https://github.com/apache/pulsar/pull/9152 

Flaky test: 修复偶尔失败的单元测试。 

https://github.com/apache/pulsar/pull/9226 

Test: 清理 ​​BatchSourceExecutorTest​​ 中的 Flaky 测试。 

https://github.com/apache/pulsar/pull/9243 

Function

Functions: 修复 Go Functions 中因未正确设置 ​​BatchBuilder​​ 而导致的 NPE。 

https://github.com/apache/pulsar/pull/9124 

Functions: 修复 Function worker 不使用 ​​isSuperUser​​ 方法检查超级用户状态的问题。 

https://github.com/apache/pulsar/pull/9259 

其他

修复由 ByteBuf 释放引起的内存泄漏问题。 

https://github.com/apache/pulsar/pull/9194 

Storage: 修复 ​​ManagedLedgerInterceptorImpl​​​ 中的 ​​BKIncorrectParameterException​​ 问题。 

https://github.com/apache/pulsar/pull/9091 

Placement Policy: 修复自动恢复不遵守隔离组设置的问题。 

https://github.com/apache/pulsar/pull/8961

修复 ​​apply-config-from-env.py​​ 中的复现问题。 

https://github.com/apache/pulsar/pull/9097

Pulsar IO: 修复 Debezium connector 的错误日志。 

https://github.com/apache/pulsar/pull/9063 

Topic Policy: 修复 Flaky 单元测试的问题。 

https://github.com/apache/pulsar/pull/9262 

Interceptor: 修复拦截器无法处理 multipart / form-data 边界的问题。 

https://github.com/apache/pulsar/pull/9247 

Log: 提供 ​​OpAddEntry​​ 的调试日志。 

https://github.com/apache/pulsar/pull/9239 

Python: 使​​producer#send​​​ 同步发送消息时返回 ​​MessageId​​。 

https://github.com/apache/pulsar/pull/9287 

Tiered Storage: 修复卸载时虚假 ​​complete​​ 的问题。 

https://github.com/apache/pulsar/pull/9306 

Compaction: 修复当压缩 ledger 为空时 topic 压缩的问题。 

https://github.com/apache/pulsar/pull/9206

Dead Letter Queue: 修复当为死信队列(DLQ)创建生产者时,使用不正确的条件检查的问题。 

https://github.com/apache/pulsar/pull/9166 

Build: 修复当使用不同的 OpenSSL 时,在 Mac OS上构建 C ++ 客户端库的问题。

https://github.com/apache/pulsar/pull/9165

技术干货


· Apache Pulsar vs. Kafka and other data processing technologies[1]

· How to implement asynchronous replication in Apache Pulsar[2]

· How Apache Pulsar is Helping Iterable Scale its Customer Engagement Platform[3]

· Taking a Deep-Dive into Apache Pulsar Architecture for Performance Tuning[4]

· How Apache Pulsar is Helping Iterable Scale its Customer Engagement Platform[5]

· Making the Most of the Apache Pulsar Messaging Platform Has Never Been Easier[6]

· 视频|Watch Your Streams: Implementing OpenTelemetry with Apache Pulsar[7]

· 视频 | Apache Pulsar x Flink 批流融合原理[8]



以上就是 2021 年 1 月份的脉动之旅。Apache Pulsar 正在快速成长,感谢来自大家的支持!

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

如果你对 Pulsar Contribute 的流程不太熟练,也可以参考我们这篇小教程,让你熟悉如何通过 GitHub 对 Pulsar 进行贡献: 

​新手向|非技术人员如何参与 Pulsar 项目进行贡献​​。