关于 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 性能调优之架构

· 为什么说 Pulsar 是云原生的消息平台?

· 批流融合:Pulsar Flink Connector 2.7.0 发布

· 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]

相关阅读

· Pulsar 社区周报|2021-01-18 ~ 2021-01-24

· Pulsar 社区周报|2021-01-11~2021-01-17

· Pulsar 社区周报|2021-01-04~2021-01-10


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

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

如果你对 Pulsar Contribute 的流程不太熟练,也可以参考我们这篇小教程,让你熟悉如何通过 GitHub 对 Pulsar 进行贡献: 
新手向|非技术人员如何参与 Pulsar 项目进行贡献


引用链接

[1] Apache Pulsar vs. Kafka and other data processing technologies: https://searchdatamanagement.techtarget.com/post/Apache-Pulsar-vs-Kafka-and-other-data-processing-technologies
[2] How to implement asynchronous replication in Apache Pulsar: https://searchdatabackup.techtarget.com/post/How-to-implement-asynchronous-replication-in-Apache-Pulsar
[3] How Apache Pulsar is Helping Iterable Scale its Customer Engagement Platform: https://streamnative.io/en/blog/case/2021-01-05-iterable-scale-customer-engagement-platform-with-pulsar
[4] Taking a Deep-Dive into Apache Pulsar Architecture for Performance Tuning: https://streamnative.io/en/blog/tech/2021-01-14-pulsar-architecture-performance-tuning
[5] How Apache Pulsar is Helping Iterable Scale its Customer Engagement Platform: https://streamnative.io/en/success-stories/iterable
[6] Making the Most of the Apache Pulsar Messaging Platform Has Never Been Easier: https://www.tibco.com/blog/2021/01/28/making-the-most-of-the-apache-pulsar-messaging-platform-has-never-been-easier/
[7] 视频|Watch Your Streams: Implementing OpenTelemetry with Apache Pulsar: https://www.youtube.com/watch?v=C5Vzu1M7fYE&list=UUywxUI5HlIyc0VEKYR4X9Pg
[8] 视频 | Apache Pulsar x Flink 批流融合原理: https://www.bilibili.com/video/BV11X4y1P7PD

脉冲星 1 月脉动 | Pulsar Flink Connector 2.7.0 发布_Apache Pulsar