关于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。
GitHub 地址:http://github.com/apache/pulsar/
本月报由 StreamNative 负责维护,如需转载,欢迎后台联络。
导语
各位小伙伴们,2021 年 5 月 Pulsar 社区月报来啦!
感谢以下各位社区成员本月对 Pulsar 项目的代码贡献,让 Apache Pulsar 继续发光发热!(排名不分先后,看看你有没有上榜 ??):
jerrypeng、dlg99、rdhabalia、315157973、k2la、eolivelli、wolfstudy、cbornet、abhilashmandaliya、 fantapsody、devinbost、BewareMyPower、zymap、freeznet、codelipenghui、dragonls、KannarFr、linlinnn、devinbost、merlimat、lhotari、cdbartholomew、hangc0276、abhilashmandaliya、congbobo184、BewareMyPower、aahmed-se、Shoothzj、yangl、odmarkj、lbenc135、jangwind、MarvinCai、wangjialing218、david-streamlio、zzzming、dockerzhang、saosir、Anonymitaet 、wenbingshen、massakam、mantuliu、michaeljmarshall、urfreespace、tuteng、addisonj、Sunny-Island、newur、RobertIndie、timmyyuan、sijie、sijia-w、atezs82、Shoothzj、aahmed-se
项目进展
[PIP-45] 恢复会话后,重新验证 leader 选举。
https://github.com/apache/pulsar/pull/10457
[PIP-85] 将 schema 信息添加到 Java Client API 的消息中。
https://github.com/apache/pulsar/pull/10476
重要进展
Broker
Broker:在强制删除 namespace 后,删除剩余信息。
https://github.com/apache/pulsar/pull/10465
Broker:MetadataCache
中的 readModifyUpdate
应返回赋予新值的CompletableFuture<T>
。
https://github.com/apache/pulsar/pull/10474
Broker:HttpLookupService
支持 listenerName
配置项。
https://github.com/apache/pulsar/pull/10319
Broker:为拦截器添加 onFilter
。
https://github.com/apache/pulsar/pull/10489
Broker:将 topic 级别的 averageMsgSize
暴露给指标。
https://github.com/apache/pulsar/pull/10553
Broker:在无需处理 startMessageRollbackDurationSec
的情况下获得持久订阅。
https://github.com/apache/pulsar/pull/10520
Broker:当 broker 内一个 consumer 的订阅数到达顶峰时,允许其他尚未达到订阅数的consumer 消费消息。
https://github.com/apache/pulsar/pull/10417
Broker:使用并发的 Hash map 处理锁通知。
https://github.com/apache/pulsar/pull/10680
Broker:支持在 Pulsar broker 和 Pulsar client 中配置忙等待。
https://github.com/apache/pulsar/pull/10661
Broker:使用 MetadataStore
设置 transaction 元数据。
https://github.com/apache/pulsar/pull/10677
Broker:使用 MetadataStore
设置初始 namespace。
https://github.com/apache/pulsar/pull/10612
Broker:当 managedLedgerNewEntriesCheckDelayInMillis
设置为 0
时避免上下文切换。
https://github.com/apache/pulsar/pull/10660
Broker:使用 MetadataStore
设置 Pulsar 集群。
https://github.com/apache/pulsar/pull/10600
Broker:在迭代自定义 HASH 映射时避免制作内部映射的副本。
https://github.com/apache/pulsar/pull/10691
Broker:优化 getTopicPolicies
,避免抛出不必要的异常。
https://github.com/apache/pulsar/pull/10683
Broker:迁移 NamespaceService
以使用 MetadataStore
。
https://github.com/apache/pulsar/pull/10532
BookKeeper
BookKeeper:用 MetadataStore
初始化 ManagedLedgerFactory
。
https://github.com/apache/pulsar/pull/10647
BookKeeper:确保在缓存失效时正确关闭 ReadHandle
。
https://github.com/apache/pulsar/pull/10659
BookKeeper:支持配置 BookKeeper client 工作线程数。
https://github.com/apache/pulsar/pull/10649
Bookie
Bookie:修复 ledger rollover 期间发布回调的 entry 数据为空的问题。
https://github.com/apache/pulsar/pull/10467
Bookie:修复获取统计信息和每个 namespace 的最大 topic 数时可能出现的错误,并删除不必要的错误日志。
https://github.com/apache/pulsar/pull/10500
Client
Client:修复 Pulsar 客户端空指针异常的问题。
https://github.com/apache/pulsar/pull/10470
Java Client:使用 KeyValueSchema
修复 Schema.AUTO_CONSUME()
的行为并编写不同版本的 schema。
https://github.com/apache/pulsar/pull/10492
Python Client:用 PulsarExceptions
替换 Exceptions
。
https://github.com/apache/pulsar/pull/7600
Pulsar client:将 org.apache.bookkeeper:cpu-affinity
添加到阴影配置文件中。
https://github.com/apache/pulsar/pull/10681
Java Client:不要在多主题 consumer 上一直检查分区元数据。
https://github.com/apache/pulsar/pull/10708
Enhancement
Enhancement:改进在本地运行启动过程中处理错误的方式。
https://github.com/apache/pulsar/pull/10450
Enhancement:修复 TopicPolicies
可能存在的内存泄漏。
https://github.com/apache/pulsar/pull/10466
Enhancement:支持在不中断 producer 和 consumer 的情况下截断 topic 的所有数据。
https://github.com/apache/pulsar/pull/10326
Enhancement:支持使用自定义 SerDe 创建 MetadataCache
。
https://github.com/apache/pulsar/pull/10543
Enhancement:支持 reader 从单独的消息 ID 或时间中查找消息。
https://github.com/apache/pulsar/pull/10348
Enhancement:支持禁用 producer 的最大队列大小。
https://github.com/apache/pulsar/pull/9650
Transaction
Transaction:支持通过 transaction Admin API 获取 transaction 状态。
https://github.com/apache/pulsar/pull/10639
Transaction:添加 transaction Admin API getPendingAckInternalStats
。
https://github.com/apache/pulsar/pull/10725
Transaction:修复 transaction 日志中 ManagedLedger 的 WriteFail
状态。
https://github.com/apache/pulsar/pull/10711
Transaction:添加 transaction Admin API getSlowTransactions
和 getSlowTransactionsByCoordinatorId
。
https://github.com/apache/pulsar/pull/10701
Transaction:添加 transaction Admin API getTransactionMetadata
。
https://github.com/apache/pulsar/pull/10690
Transaction:添加 transaction Admin API getCoordinatorInternalStats
。
https://github.com/apache/pulsar/pull/10653
Transaction:添加 transaction Admin API getTransactionBufferStatus
和 getPendingAckStatus
。
https://github.com/apache/pulsar/pull/10650
Transaction:添加 transaction Admin API getTransactionInPendingAckStats
。
https://github.com/apache/pulsar/pull/10648
Transaction:添加 transaction Admin API getTransactionInBufferStats
。
https://github.com/apache/pulsar/pull/10642
Schema
Schema:通过 AutoConsumeSchema
支持消费多种 schema 类型的消息。
https://github.com/apache/pulsar/pull/10604
Schema:在 AutoConsumeSchema.decode
中,准确地将 decode(payload, schemaversion)
回调代理到封装好的 Schema。
https://github.com/apache/pulsar/pull/10700
Schema:支持使用 AutoProduceBytesSchema
作为 function 输出 schema。
https://github.com/apache/pulsar/pull/10716
Java:[Schema] 启用有关 AutoConsume
和 KeyValue
的禁用测试,并添加有关空值的测试。
https://github.com/apache/pulsar/pull/10626
Java:[Schema] 添加更多关于 KeyValue
和空值的测试。
https://github.com/apache/pulsar/pull/10609
其他
Auth:在 Pulsar broker 和 Pulsar proxy 中为 Jetty 启用 Conscrypt。
https://github.com/apache/pulsar/pull/10541
Auth:在 HTTP 身份验证中支持可选的身份验证方法名称标头。
https://github.com/apache/pulsar/pull/6799
C++:添加 C++ 单文件 logger factory。
https://github.com/apache/pulsar/pull/10712
C++:在启用消息监听器时减少冗余的 redeliverMessages
。
https://github.com/apache/pulsar/pull/10726
CLI:支持通过 CLI 设置基于时间限制的积压配额。
https://github.com/apache/pulsar/pull/10401
Common:修复 LongPairRangeSet
中不一致的行为。
https://github.com/apache/pulsar/pull/10713
Consumer:使 consumer 线程安全且无锁。
https://github.com/apache/pulsar/pull/10352
Functions:在同一个 Java 可运行线程中处理异步结果。
https://github.com/apache/pulsar/pull/10618
Function:在 Pulsar Admin source API 中添加 --batch-source-config
开关。
https://github.com/apache/pulsar/pull/10593
Metrics:为不连续的已删除消息范围添加指标。
https://github.com/apache/pulsar/pull/10638
Performance:优化 AuthProviderToken
类以使用相同的解析器实例。
https://github.com/apache/pulsar/pull/10664
Pulsar Admin:返回更好的错误消息。
https://github.com/apache/pulsar/pull/10628
Pulsar Proxy:调整 logger.debug
的位置。
https://github.com/apache/pulsar/pull/10684
Pulsar IO:在可能的情况下,在 Pulsar sink connector 中使用 Message.getReaderSchema()
。
https://github.com/apache/pulsar/pull/10557
重构 try-lock 代码模式。
https://github.com/apache/pulsar/pull/10742
Test:从隔离组中删除与 key_shared 相关的测试。
https://github.com/apache/pulsar/pull/10508
Bug 修复
Admin
Admin: 修复获取不存在 topic 的分区元数据时返回 0
的问题。
https://github.com/apache/pulsar/pull/10601
Admin:将 bundle split 操作转换为 HTTP 异步操作。
https://github.com/apache/pulsar/pull/10619
Broker
Broker:将日志记录添加到 JavaInstanceRunnable
中,帮助调试问题。
https://github.com/apache/pulsar/pull/10461
Broker:修复在未创建调度程序情况下解锁卡住的订阅任务时出现的空指针异常问题。
https://github.com/apache/pulsar/pull/10430
Broker:修复更新分区 topic 的分区号时产生的授权错误。
https://github.com/apache/pulsar/pull/10333
Broker:在新的 namespace 路由上支持 PolicyName
和 Authz
。
https://github.com/apache/pulsar/pull/7900
Broker:将 ManagedLedgerInterceptor
的方法 onManagedLedgerLastLedgerInitialize
异步化。
https://github.com/apache/pulsar/pull/10706
Broker:修复过滤读取 entry 时发生的 NPE 问题。
https://github.com/apache/pulsar/pull/10704
Broker:修复尝试重新发送大量已确认消息时出现 StackOverflowError
的问题。
https://github.com/apache/pulsar/pull/10696
Broker:修复 advanceNonDurableCursors
中的问题。
https://github.com/apache/pulsar/pull/10667
Broker:捕获 checkSubscriptionTypesEnable
中异常。
https://github.com/apache/pulsar/pull/10341
代理:修复检查分区主题是否为系统主题时发生的错误。
https://github.com/apache/pulsar/pull/10529
Broker:修复 PusarService
和 conf.
中的 AdvertisedAddress
不一致的问题。
https://github.com/apache/pulsar/pull/10312
Broker:加固 OpAddEntry.toString()
到 null 以防止 NPE。
https://github.com/apache/pulsar/pull/10548
Broker:修复 consumer 相关 topic 统计信息只在 consumer 或 reader 连接时才可用的问题。
https://github.com/apache/pulsar/pull/10644
Client
Client:修复 hasMessageAvailableAsync
返回 true
但无法读取消息的问题。
https://github.com/apache/pulsar/pull/10414
Client:修复 GenericJsonRecord
中的空指针异常问题。
https://github.com/apache/pulsar/pull/10482
Client:修复 ACK 分组跟踪器检查重复的消息 ID 时抛出的 NPE 问题。
https://github.com/apache/pulsar/pull/10586
Client:修复默认的重试主题名称和死信主题名称。
https://github.com/apache/pulsar/pull/10129
pulsar-client:修复 pulsar-client 阴影配置中的问题。
https://github.com/apache/pulsar/pull/10614
Pulsar-client:修复 MessageCrypto
接口不应在 API 中暴露 NettyByteBuf
类的问题。
https://github.com/apache/pulsar/pull/10616
Java Client:将错误消息添加到 setMaxPendingMessagesAcrossPartitions
。
https://github.com/apache/pulsar/pull/10709
Function
Function:修复 Pulsar Function API 无法使用身份验证数据检查超级用户的问题。
https://github.com/apache/pulsar/pull/10364
Function:修复死锁,监控被 LeaderService.isLeader()
阻塞的线程。
https://github.com/apache/pulsar/pull/10502
Function:支持为插件程序服务设置自定义配置。
https://github.com/apache/pulsar/pull/10504
Function:修复 sink 或 source 异常统计信息。
https://github.com/apache/pulsar/pull/10549
Function:使用默认的 Kubernetes secret 挂载权限来允许非 root 用户读取认证 token。
https://github.com/apache/pulsar/pull/10743
Test
Test:修复 GracefulExecutorServicesShutdownTest
的 flaky test。
https://github.com/apache/pulsar/pull/10599
Test:重构 function 集成测试以更易于维护。
https://github.com/apache/pulsar/pull/10140
Test:修复失败的 TopicPoliciesTest.testMaxSubscriptionsFailFast
测试。
https://github.com/apache/pulsar/pull/10640
Transaction
Transaction:修复 transaction 缓冲区删除标记的问题。
https://github.com/apache/pulsar/pull/10525
Transaction:修复 transaction 对于拥有多个订阅的 topic 的签收问题。
https://github.com/apache/pulsar/pull/10689
其他
Authz:添加 topic API 身份验证的颗粒度。
https://github.com/apache/pulsar/pull/7523
Build:修复由被拒绝的权限引起的构建错误。
https://github.com/apache/pulsar/pull/10641
Common:修复 ConcurrentOpenLongPairRangeSet
以删除所有范围的数据。
https://github.com/apache/pulsar/pull/10656
修复二进制许可证检查问题并将用于 Pulsar SQL 的 Jersey 更新到 2.34 版本。
https://github.com/apache/pulsar/pull/10682
ManagedLedger:修复用于防止超时和完成之间竞争条件的原始解决方案。
https://github.com/apache/pulsar/pull/10740
ManagedLedger:修复计划任务取消操作,使其在 asyncClose
方法中更早发生。
https://github.com/apache/pulsar/pull/10739
Offloader:修复 AWS 凭证使用问题。
https://github.com/apache/pulsar/pull/8950
Pulsar-IO:暴露 SinkContext
中的 SubscriptionType
。
https://github.com/apache/pulsar/pull/10446
活动与干货
活动
•报名 Pulsar Virtual Summit North America 2021[1]•Pulsar Virtual Summit North America 2021 议程出炉[2]•开源之夏启动!欢迎报名 Apache Pulsar 社区项目
案例
•最佳实践|Apache Pulsar 在拉卡拉的技术实践•从 Kafka 到 Pulsar,华为云物联网上云之旅[3]
博文
•博文推荐|多图科普 Apache Pulsar•技术探究:Apache Pulsar 的事务型事件流•博文推荐|零经验玩转隔离策略:多个 Pulsar 集群•技术博文|Flink 和 Pulsar 的批流融合•博文推荐|如何使用Apache Pulsar + Hudi 构建 Lakehouse•译文|基于 Pulsar 的事件驱动铁路网• Apache Pulsar — Development Setup — alpha2phi[4]•7 Reasons to Choose Apache Pulsar over Apache Kafka, Chris Bartholomew[5]•Fast JMS for Apache Pulsar: Modernize and Reduce Costs with Blazing Performance, Enrico Olivelli[6]•Monitoring the Health of Apache Pulsar with Pulsar Heartbeat, Ming Luo[7]
生态
•周边生态|StreamNative 宣布开源 Function Mesh:简化云上的复杂流任务•周边生态 | StreamNative 和腾讯宣布开源 RoP:Apache Pulsar 支持原生 RocketMQ 协议•周边生态|StreamNative 宣布开源 AMQP 1.0 Connector•项目动态|Apache Pulsar 2.7.2 版本发布!
相关阅读
•脉冲星 4 月脉动•脉冲星 3 月脉动•脉冲星 2 月脉动
以上就是 2021 年 5 月份的脉动之旅。Apache Pulsar 正在快速成长,感谢来自各位社区成员的支持!
Apache Pulsar 社区鼓励大家积极参与开源社区,无论是文档、代码、翻译,还是技术博客,都欢迎大家积极参与,早日成为 Pulsar contributor,一起加油!
引用链接
[1]
报名 Pulsar Virtual Summit North America 2021: https://hopin.com/events/pulsar-summit-north-america-2021[2]
Pulsar Virtual Summit North America 2021 议程出炉: https://streamnative.io/en/blog/community/2021-05-12-pulsar-virtual-summit-north-america-2021-speakers-announced[3]
从 Kafka 到 Pulsar,华为云物联网上云之旅: https://www.infoq.cn/article/pYL93ahACjrHskbhkRgC[4]
Apache Pulsar — Development Setup — alpha2phi: https://alpha2phi.medium.com/apache-pulsar-development-setup-bbdc82314cf[5]
7 Reasons to Choose Apache Pulsar over Apache Kafka, Chris Bartholomew: https://datastax.medium.com/7-reasons-to-choose-apache-pulsar-over-apache-kafka-cb111087eadb[6]
Fast JMS for Apache Pulsar: Modernize and Reduce Costs with Blazing Performance, Enrico Olivelli: https://www.datastax.com/blog/fast-jms-apache-pulsar[7]
Monitoring the Health of Apache Pulsar with Pulsar Heartbeat, Ming Luo: https://www.datastax.com/blog/monitoring-health-apache-pulsar-pulsar-heartbeat
点击“阅读原文”,获取 Apache Pulsar 硬核干货资料!
本文分享自微信公众号 – ApachePulsar(ApachePulsar)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
{{m.name}}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/72701.html