分享

Apache Pulsar2.5.1 版本发布:新特性介绍

hyj 2020-5-5 17:03:23 发表于 其它 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 3393

问题导读

1.Pulsar2.5.1 修复了哪些漏洞?
2.新版本做了哪些改进?
3.如何下载Pulsar2.5.1 ?


2020 年 04 月 23 日,Apache Pulsar 正式发布了 2.5.1 版本。

Apache Pulsar 2.5.1 版本合并了社区的 131 个 PR,修复了大量漏洞,涵盖 Broker、客户端、Pulsar Functions、connectors 等,进一步丰富和完善了 Pulsar 作为一个云原生流数据平台的能力。

在这篇文章中,我们将会为大家详细解读 2.5.1 中修复、改进的特性。

01 漏洞修复



Broker

修复在禁用自动创建 topic 的时候,在 partitioned topic 上创建 consumer。[PR-5572]

修复 consumer 统计数据中的 negative unack 的消息。[PR-5929]

修复无法创建或更新包含 global 的集群的租户。[PR-6275]

当 topic 名称与分区名称一致时,避免获取分区元数据。[PR-6339]

支持使用现有 topic 名称的 substring 创建分区 topic。[PR-6478]

修复因运行 topic compaction 导致的内存泄露问题。[PR-6485]

解决在 batch 模式下创建 topic 时,Admin 的`getLastMessageId` 无法获取 `batchIndex` 的问题。[PR-6511]

修复无法将只包含一个分区的 topic 升级成为包含多个分区的 topic 问题。[PR-6560]

修复 putShema() 运行中产生的 `BadVersionException` 异常情况。[PR-6683]

在 `Policies` class 中,重新启用 `clusterDispatchRate` 字段,用于设置 topic-level 排空速率,以便实现新老版本的兼容性。[PR-6176]

在 broker.conf 文件中显示 BookKeeper `explicit lac` 的配置信息,以便用户使能 `explicitLacInterval`,获取 Pulsar SQL 中的最新消息。[PR-5822]

支持在命名空间使能或禁用消息延迟发送的功能。[PR-5915]

避免在现有的分区 topic上创建同名的 regular topic。[PR-5943]

修复 cursor 重置问题,避免出现 `InvalidCursorPosition Exception` 问题。[PR-6120]

修复 BrokerService 中的 Timeout API 调用,为在 BrokerService 中创建的所有 futures 设置 deadline。[PR-6235]

修复 `PersistentTopicsBase` 的一些 async 方法问题。[PR-6483]


Pulsar Proxy

修正 Pulsar proxy 线程执行器名称。[PR-6460]

修复已发布消息的日志问题。[PR-6474]

修复 Pulsar proxy 到 Functions worker 的路由问题。[PR-6486]



Stats & Monitoring
在 `topicStats` 中添加 `backlogSize`。[PR-5914]

在 consumer 统计信息中,显示 `lastConsumedTimestamp` 和 `lastAckedTimestamp` 信息。[PR-6051]

改进 Topic 中 backlogSize 的统计。[PR-6700]



Security

修复发布 buffer 限制不生效的问题。[PR-6431]

修复 `authenticationData` 无法初始化的问题。[PR-6440]

为二进制连接验证 token。[PR-6233]

修复在 Standalone 模式下使能 TLS 后,namespace 创建失败的问题。[PR-6457]

为 topic 提供更多颗粒度许可。[PR-6504]


Pulsar Schema

修复在 `HttpLookupService` 获取 schema 版本问题。[PR-6193]

为 topic 生成的 consumer 设置独立的 schema。[PR-6356]

修复错误的 Avro schema。[PR-6406]

修复 Functions 中 Avro scheme 解码错误问问题。[PR-6662]

为 `SchemaDefinitionBuilderImpl.java` 添加验证。[PR-6405]



Pulsar Functions

修复 Window Functions 部署问题。[PR-6246]

在 `PulsarSinkEffectivelyOnceProcessor` 中移除 `future.join()` 参数。[PR-6361]



Java client

修复即使当队列值设置为 0 时,可用的 permit 值大于 1 的问题。[PR-6106]

修复 broker 客户端 TLS 设置错误问题。[PR-6128]

修复当为 batch topic 启动 reader 时,reader 读取 batch topic 中的第一条消息的问题。[PR-6345]

修复 `hasMessageAvailable()`。[PR-6362]

删除重复的 key,以便发送属性。[PR-6390]

修复由于两次调度发现任务,而导致 multitopic 发现终止的问题。[PR-6407]

修复发送失败时的 deadlock 问题。[PR-6488]

删除重复的 `cnx` 方法。[PR-6490]

使用 `System.nanoTime()` 计算运行时间。[PR-6454]



C++ client

修复 MacOS 平台上 C++ 库的静态链接问题。[PR-5581]

修复 ExecutorService destructor 的内存损坏问题。[PR-6270]

修复 NegativeAcksTracker 如何处理已取消的定时器事件问题。[PR-6272]

修复当 Pulsar 客户端关闭时可能产生的 deadlock 问题。[PR-6277]

修复在 Windows 平台上搭建 CMake 时遇到的问题,主要包括为与 Windows 版本相匹配的 zlib、protobuf、curl 库提供更多库名。[PR-6336]

利用时间分区修复 `UnAckedMessageTracker` 问题。将 `acktimeout` 划分为几个时间分区,这样用户就可以定义再发送周期。[PR-6391]

修复将已确认消息作为未确认消息再次发送的问题。由于将 `acktimeout` 划分为几个时间分区,一些已确认消息作为未确认消息会被再次发送。[PR-6498]

当消息列表为空时,避免调用 `redeliverMessages()`,否则导致立即发送所有未确认消息。[PR-6480]

在 Debian 或 RPM 中再提供一个 `libpulsarwithdeps.a`,以避免安全问题。[PR-6458]



Python Client

修复无法找到 enum34 包的问题。[PR-6401]

支持在 Python 3.8上安装 Pulsar 客户端。[PR-6741]



Pulsar Websocket

修复 WebSocket 无法设置正确的集群数据的问题。[PR-6102]


Kubernetes

在 `values-mini.yaml` 文件中,明确说明 `BOOKIE_MEM` 和 `BOOKIE_GC`。[PR-6340]

将自动修复特性的 configmap 中的 `PULSAR_MEM` 改为 `BOOKIE_MEM`,解决执行自动修复时,提示的 `could not find or load main clas` 问题。[PR-6373]

在 `proxy-deployment.yaml` helm 模版中,定义一个新的 init container,解决因未启动 Broker 就启动 proxy 带来的 HTTP 403 问题。[PR-6158]

为 dashboard-ingress 添加缺失的检查。[PR-6160]

确保为 Bookie 设置了 JVM 内存和 GC 选项。[PR-6201]

修复运行 Kubernetes 时,使用缺省 `functionAuthProvider` 的问题。[PR-6203]


Adaptors
确保总是可以从缓存中获取已启动的 Pulsar 客户端。当缓存中的 Pulsar 客户端被关闭后,PulsarConsumerSource 重用 Pulsar client 时会产生异常情况并不断报错。[PR-6436]


02 优化改进

Broker


支持从 broker 缓存中移除已关闭的 producer,以便创建新的 producer,并有助于避免消息发布失败。[PR-5988]

支持删除已被读取所有信息,且没有活跃的 producer 或 consumer 的 topic。[PR-6077]

添加一条信息,用以说明在启动组件时如何立即刷新日志。[PR-6078]

支持将资源利用率输出至日志。[PR-6152]

引入 maxMessagePublishBufferSizeInMB 配置,避免 broker 内存溢出(OOM)。[PR-6178]

配置 `getNumberOfEntriesInBacklog(boolean isPrecise)`和 `msg_backlog_non_delayed` 参数,获取 backlog 的准确数量和不包含延迟消息的 backlog 的数量。[PR-6310]

当禁用自动创建 topic 功能时,不允许 Admin 自动创建订阅。[PR-6685]


ZooKeeper

支持在为 partitioned topic 创建分区时,在本地 ZooKeeper 创建受管 ledger 路径。[PR-6189]

将 ZooKeeper 升级至 3.5.7 版本。[PR-6329]

支持在取消调用发生异常的 `Future` 之前,关闭 ZooKeeper。[PR-6399]


Client

将 `BatchMessageIdImpl` 的 `acker` 参数设置为 `transient`,避免其打破序列化。[PR-6064]

使用 `JSONAssert` 参数并修改相关的 JSON 测试断言,以便提供更稳定的测试。[PR-6247]


Managed Ledger
增加 `OpAddEntry` 状态设置,避免不同的 ledger handle 使用同一个 OpAddEntry。[PR-5942]



Pulsar Admin
允许租户管理员管理订阅权限。[PR-6122]



03 下载链接

Pulsar 2.5.1 的下载链接:
https://pulsar.apache.org/download/

Pulsar 项目链接:
https://pulsar.incubator.apache.org/

Pulsar GitHub 代码库:
http://github.com/apache/pulsar

Pulsar Slack channel:
https://apache-pulsar.herokuapp.com/

Pulsar 邮件列表:
https://pulsar.incubator.apache.org/contact/




原文链接
https://mp.weixin.qq.com/s/WE-e4tOdsYnLOWunKYRuig

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条