共计 4660 个字符,预计需要花费 12 分钟才能阅读完成。
本文原文作者是 StreamNative 工程师丛搏、刘昱。译者刘梓霖,传智教育工程师。
对于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/
近期,Apache Pulsar 社区公布了 Pulsar 2.7.3 版本!新版本涵盖 32 位贡献者提供的改良和谬误修复,并提交了 79 次变更。
版本亮点:
• 游标读取遵循调度字节率限制器的设置,不会再导致意外的后果。[1]
• Ledger 滚动工作按预期执行。[2]
本博客介绍了 2.7.3 版本最值得关注的停顿,如需理解所有性能降级和 bug 修复的残缺列表,请查阅 Pulsar 2.7.3 公布注记[3]。
Bug 修复和性能降级
Broker
PR-9826[4] : 游标读取遵循调度字节率限制器的限度。
问题:无论是命名空间还是主题策略在限度散发速率时都未思考应用字节速率限度。
解决方案:修复了调度字节速率限制器设置的行为。游标读取会遵循此设置并且不会在导致意外的后果。
PR-11226[5]: Ledger 滚动打算工作依照预期执行。
问题:在此 PR 之前,ledger 在达到最大滚动工夫之前执行滚动工作,导致 ledger 不能及时滚动。
解决方案:修复 ledger 滚动调度的工夫,工作只能在 ledger 胜利创立之后运行。
PR-11136[6] : 在重启 broker 时,主题级别的保留策略能失常工作。
问题:在此 PR 之前,当为一个 topic 设置 topic 级保留策略而后重启 broker 时,该 topic 级别的保留策略不失效。
解决方案:修改了此策略的行为,使其在启动 policyCacheInitMap 后重放所有策略音讯,并在重新启动 broker 时增加了保留策略查看测试。
PR-10977[7]: 调用 lastMessageId API 不会再导致内存泄露。
问题:在此 PR 之前,调用 lastMessageId API 时存在内存泄露,导致 broker 过程被 Kubernetes 进行。
解决方案:为 PersistentTopic.getLastMessageId 减少了缺失的 entry.release() 调用,以确保 broker 不会耗尽内存。
PR-10594[8]: ZooKeeper 读取由 broker 缓存。
问题:当执行治理操作以获取租户的命名空间时,是 ZooKeeper 应用在 ZooKeeper 客户端读取的,而不是从 broker 缓存中读取。
解决方案:修复 ZooKeeper 在为租户获取命名空间列表时的缓存问题。
PR-10512[9]: 调用 LeaderService.isLeader() 的监控线程不再被阻塞。
问题:当 LeaderService 扭转为 leadership 状态时,会被一个 synchronized 块锁定,这也阻止了其余线程调用 LeaderService.isLeader()。
解决方案:通过批改 ClusterServiceCoordinator 和 WorkerStatsManager 以查看其是否来自 MembershipManager 的 leader,修复了监控线程的死锁条件,使其不被 LeaderService.isLeader() 阻塞。
PR-10414[10]: hasMessageAvailable 能够胜利读取音讯。
问题:因音讯被 acknowledgmentsGroupingTracker 过滤,当 hasMessageAvailableAsync 返回 true 时无奈读取音讯。
解决方案:通过批改 acknowledgmentsGroupingTracker 过滤反复音讯,并在之后连贯关上时清理音讯来修复竞争条件。
Proxy
PR-8048[11]:Proxy 反对主动创立分区 topic。
问题:Proxy 因应用的是以后的 ZooKeeper 元数据而没有创立分区。
解决方案:通过从可用 broker 中抉择和获取,而不是应用以后的 ZooKeeper 元数据来更改 proxy 以解决 PartitionMetadataRequest。
Pulsar admin
PR-11140[12]:减少标识来表明是否在复制的集群上创立元数据门路。
问题:在复制的命名空间上创立分区 topic 时,没有在复制的集群上创立元数据门路 /managed-ledgers。
解决方案:减少了一个标识(createLocalTopicOnly),用来表明是否为复制集群中的分区 topic 创立元数据门路。
PR-11131[13]:禁止为不存在的 topic 设置策略。
问题:因为 topic 策略中存在重定向循环,用户能够为不存在的 topic 或者已分区的 topic 设置策略。
解决方案:此项修复为 topic 策略减少了一个权威标识,以防止重定向循环。用户无奈为不存在的 topic 或单分区 topic 的分区设置 topic 策略。如果你为 0 分区 topic 的分区设置策略,它会重定向到 broker。
PR-10806[14]:服务发现不再将 topic 硬编码为持久性。
问题:当对分区的非长久 topic 应用查找服务发现时,就会返回 0 而不是分区数。Pulsar 客户端会以连贯一般 topic 的形式尝试连贯到该 topic。
解决方案:实现 topicName.getDomain().value() 而不是硬编码 persistent。当初用户能够胜利地对一个分区的非长久 topic 应用服务发现。
PR-10744[15]:其余连接器当初能够应用 Kinesis Backoff 类
问题:Pulsar 客户端实现我的项目中的 Kinesis sink 连接器 Backoff 类联合依赖 org.apache.pulsar:pulsar-client-original 减少了连接器的大小。
解决方案:在函数 io-core 我的项目中减少了一个新的类 Backoff,以便 Kinesis sink 连接器和其余连接器能够应用此类。
客户端
PR-10506[16]:无奈发送许可为零的 FLOW 申请。
问题:当 broker 接管到一个零许可的 FLOW 申请时,会抛出异样并且敞开连贯。这会引发频繁的重连,并导致反复或者乱序的音讯。
解决方案:减少了一个在发送 FLOW 申请之前验证其许可的验证性能,如果申请是零许可,则不能发送 FLOW 申请。
函数和连接器
PR-10769[17]:Kinesis sink 连接器确认胜利的音讯。
问题:Kinesis sink 连接器在发送胜利后没有确认音讯。
解决方案:为 Kinesis sink 连接器减少了音讯发送胜利后的确认。
Docker
PR-10531[18]:在应用 Kubernetes 运行时,Function 名称不能超过 52 个字符。
问题:当应用 Kubernetes 运行时,如果提交的 function 长度无效(小于 55 个字符),就会创立一个无奈产生 pod 的 StatefulSet。
解决方案:将 Kubernetes 运行时的 function 名称的最大长度从 55 个字符改为 53 个字符。通过这一修复,function 名字的长度不能超过 52 个字符。
依赖
PR-10907[19]:启动 TLS 后,pulsar-admin 与 proxy 的连贯稳固了。
问题:因为 Jetty 9.4.39 中引入了 SSL 缓存的谬误,pulsar-admin 在 TLS 连贯中不稳固,,导致大型 function jar 包上传频繁失败。
解决方案:将 Jetty 降级到 9.4.42.v20210604,这样当启用 TLS 时,pulsar-admin 与 proxy 的连贯是最稳固的。
参加其中
新版本应用
欢送大家下载 [20] 并应用新版本!如果在应用中遇到问题,能够通过提 issue[21] 或在微信群交换的形式抛出疑难并与社区交换。
退出 Apache Pulsar 社区
Pulsar 我的项目的成长来源于社区,也扎根于社区。一次次新版本的筹备与公布离不开社区搭档们的奉献。你是否违心成为其中的一员呢?
参加开源,能够取得公司及社区内外的认可,结交来自各个领域、气味相投的小伙伴;同时也能够进步集体影响力,促成集体倒退。参加开源不是码农的专属,社区、文档等各个方面都能够让大家施展一技之长。
作为全球性开源我的项目,截至目前,Apache Pulsar 已领有 435 名贡献者、9.4K+ Star、2.3 K+ Fork。咱们为大家提供了参加指南,欢送越来越多的小伙伴助力 Apache Pulsar 我的项目的一直倒退与后退。
• Apache Pulsar 官网奉献指南[22]
• 退出 Apache Pulsar 志愿者小家庭
译者信息
Hi~ 我叫刘梓霖,一名会 code 的斜杠青年 ~
举荐浏览
•Pulsar 2.8.0 新增个性概览:独占 Producer、事务等
•Apache Pulsar 2.7.1 版本正式公布!
援用链接
[1] 游标读取遵循调度字节率限制器的设置,不会再导致意外的后果。: https://github.com/apache/pul…
[2] Ledger 滚动工作按预期执行。: https://github.com/apache/pul…
[3] Pulsar 2.7.3 公布注记: https://pulsar.apache.org/en/…
[4] PR-9826: https://github.com/apache/pul…
[5] PR-11226: https://github.com/apache/pul…
[6] PR-11136: https://github.com/apache/pul…
[7] PR-10977: https://github.com/apache/pul…
[8] PR-10594: https://github.com/apache/pul…
[9] PR-10512: https://github.com/apache/pul…
[10] PR-10414: https://github.com/apache/pul…
[11] PR-8048: https://github.com/apache/pul…
[12] PR-11140: https://github.com/apache/pul…
[13] PR-11131: https://github.com/apache/pul…
[14] PR-10806: https://github.com/apache/pul…
[15] PR-10744: https://github.com/apache/pul…
[16] PR-10506: https://github.com/apache/pul…
[17] PR-10769: https://github.com/apache/pul…
[18] PR-10531: https://github.com/apache/pul…
[19] PR-10907: https://github.com/apache/pul…
[20] 下载: https://pulsar.apache.org/en/…
[21] 提 issue: https://github.com/apache/pul…
[22] Apache Pulsar 官网奉献指南: http://pulsar.apache.org/en/c…