关于 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
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
技术干货
· 批流融合: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