Apache Pulsar 在 5 月 31 日正式发布了 2.3.2 版本!2.3.2 版本继续丰富和完善了 Apache Pulsar 作为一个云原生流数据平台的能力。
2.3.2 版本修复和改进了用户在使用 2.3.1 版本中反馈的问题,这些修复覆盖了从消息存储核心,多语言客户端,到 Pulsar Functions、Connectors 等多个方面。这篇文章会详细介绍 2.3.2 版本中修复和改进的特性。这其中包括:
在核心存储方面,把 BookKeeper 版本升级到 4.9.2,解决了 DbLedgerStorage 启动失败和用户在安装 BookKeeper 客户端依赖库时,需要安装 GCC 的问题。在 broker 方面,修复了死锁、认证和消息回退等问题。在安全方面,升级了认证版本。
在多语言客户端,修复了 Python 嵌套结构下无法进行序列化的问题,修复了 C++ 初始化错误,修复了 pulsar-client-go 构建时参数类型错误等。
在 Pulsar Functions 方面,丰富了 Functions Worker 的功能,优化了 Java Function,并在 Python 中增加了 Table service 接口。修复了提交功能,可以通过 URL 上传整个文件。
CORE
Storage
Pulsar 2.3.2 版本中,BookKeeper 版本从 4.9.1 升级到 4.9.2,修复和完善了以下功能。
-
BookKeeper 4.9.1 版本中没有设置 dbStorage_writeCacheMaxSizeMb 时,会导致 DbLedgerStorage 启动失败。该版本修复了这个问题。
-
由于 PyPI 没有发布 mmh3 的依赖库,用户在安装 BookKeeper 客户端依赖库时,需要安装 GCC。BookKeeper 4.9.2 版本使用 Python 实现了 MurmurHash,用户不需要再安装 GCC。
Broker
-
在之前的版本中,分割 bundle 时,大量的消费者或生产者重连会导致死锁。这是因为在确定 topic 的拥有者时,会同步检查 bundles 的元信息,如果元信息没有缓存,就会出现问题。2.3.2 版本中增加了对元信息的检查,如果元数据没有缓存,就放弃操作,这样就避免了死锁。
-
如果两个 topic 在同一个 broker 上,客户端会复用同一个 future 来管理。但当其中一个 topic 被移动到其他 broker 时,移动到其他 broker 上的这个 topic 需要一条新的连接来访问,如果没有清除缓存的 future,服务会出错。2.3.2 版本中,当 topic 被移动到其他 broker 时,缓存的 future 会自动清除,确保再次请求时服务不会出错。
-
修复了关闭认证时引发的空指针异常。
-
修复了在创建租户时配置为空的情况。
-
在之前的版本中,如果把消息回退时间设置在起始消费时间之前,结果为空。正常情况下,消息应该回退到第一条消息。2.3.2 版本修复了这个问题。
Security
-
2.3.2 版本中 athenz 的版本升级到 1.8.17。
CLIENTS
Python
修复了在嵌套结构下无法进行序列化的问题。
C++
修复了由于没有连接导致 sendTimer_ 没有初始化的错误。
Go
修复了 pulsar-client-go 构建时参数类型错误的问题。
FUNCTIONS
Core
-
当用户提交 Functions、Source 或者 Sink 的时候,Functions Worker 会对 Functions 做基本检查。当用户提交的代码里含有 static 代码块,检查时会将 static 执行一遍。2.3.2 版本中,通过不创建实例,可以保证用户代码的 static 代码块在检查中不被执行。
-
修复了 namespace 的兼容性。
-
支持 functions-worker 与 bookie 的认证。
-
优化 Pulsar Functions archive 的下载性能 。
-
在 Functions 和 Sinks 中,用户可以更新 output topic 的内容。
-
2.3.2 版本之前,pulsar-admin API 中无法通过 functions-worker 正确获取 function-stats 命令。2.3.2 版本中修复了这个问题。
-
修复了 functions metric 中有重复 #HELP 的问题。
Java
-
2.3.2 版本中,用户可以从 Pulsar Functions 的返回值中获取到相应的属性和配置信息。
-
在 Functions 中,用户启动 auth 功能后,不传递 token 程序也可以正常运行。正常情况下,传递 token 后,程序才能正常运行。该版本修复了这个逻辑。
Python
-
增加了 Table service 接口。
CONNECTORS
-
修复 Source、Sink 启动 localrun 模式时失败的问题。
-
增加了 Sink 的接收队列大小的配置选项。
-
支持 Source 和 Sink 嵌套配置。
-
为 Source 和 Sink 提供默认的 tenant 和 namespace。
下载链接
Pulsar 2.3.2 的下载链接:
https://pulsar.incubator.apache.org/en/download/
Pulsar 项目链接:
https://pulsar.incubator.apache.org/
Pulsar Github 代码库:
https://github.com/apache/incubator-pulsar
Pulsar slack channel:
https://apache-pulsar.herokuapp.com/
Pulsar 邮件列表:
https://pulsar.incubator.apache.org/contact/