当前位置 : 主页 > 编程语言 > python >

项目动态|Apache Pulsar 2.8.2 版本发布

来源:互联网 收集:自由互联 发布时间:2022-06-18
关于 Apache Pulsar 云原生时代消息队列和流融合系统,提供统一的消费模型,支持消息队列和流两种场景,既能为队列场景提供企业级读写服务质量和强一致性保障,又能为流场景提供高



关于 Apache Pulsar

云原生时代消息队列和流融合系统,提供统一的消费模型,支持消息队列和流两种场景,既能为队列场景提供企业级读写服务质量和强一致性保障,又能为流场景提供高吞吐、低延迟;采用存储计算分离架构,支持大集群、多租户、百万级 Topic、跨地域数据复制、持久化存储、分层存储、高可扩展性等企业级和金融级功能。
GitHub 地址:http://github.com/apache/pulsar/


近期,Apache Pulsar 社区发布了 Pulsar 2.8.2 版本!一起来看一下新版本的 release note,有哪些值得关注的升级吧。

安全增强

PR - 13392​[1]​:将 log4j 升级至 2.17.0 版本 - CVE-2021-45105​[2]​。

PR - 13328​[3]​:将 Netty 升级至 4.1.72 版本 - CVE-2021-43797​[4]​。

PR - 13133​[5]​:恢复新的 ​​AuthorizationProvider​​方法。

PR - 12963​[6]​:在启用认证后,支持​​CLEAR_BACKLOG​​ namespace 操作。

PR - 11681​[7]​:支持禁用非 TLS 的服务端口。

PR - 11660​[8]​:将 Jetty 升级到 9.4.43 版本(v20210629)。

Broker

PR - 13069​[9]​:修复和提高 topic ownership 的调派。

PR - 13066​[10]​:修复 ​​LeaderElectionService.getCurrentLeader​​​,并在 ​​MockZooKeeper​​​ 中添加对​​empheralOwner​​ 的支持。

PR - 12993​[11]​:不再重复使用导致 bundle 超时卸载的错误 OpAddEntry 对象。

 PR - 12873​[12]​:当 ​​SystemTopicBasedTopicPoliciesService​​ 出现异常时,移除 readerCaches,并关闭 reader。

PR - 12773​[13]​:修复 ​​TopicPoliciesCacheNotInitException​​ 问题。

PR - 12742​[14]​:在启用认证后,支持取消对命名空间的订阅操作。

PR - 12729​[15]​:修复 ​​PersistentTopic#addReplicationCluster​​ 竞争条件。

PR - 12721​[16]​:解决即使始终设置兼容也不能创建 consumer 的问题。

PR - 12714​[17]​:当启用​​BrokerEntryMetadata​​ 时,修复不正确的总体占用空间。

PR - 12698​[18]​:在重置游标时,修复由于压缩属性丢失而导致的压缩数据丢失问题。

PR - 12675​[19]​:修复 ​​TestRunMain​​ 的测试。

PR - 12656​[20]​:在启用认证后,支持 ​​GET_METADATA​​ topic 选项。

PR - 12650​[21]​:修复 ​​OwnershipCache#checkOwnership​​ 中的错误的肯定所有权检验。

PR - 12647​[22]​:优化 schema 的异常信息。

PR - 12640​[23]​:为测试方法添加 @test​[24]​ 注释。

PR - 12622​[25]​:在创建 TopicPolicies reader 时,支持重试。

PR - 12619​[26]​:修复 “应该使用 =而不是 == ” 的字符串。

PR - 12615​[27]​:修复 PR - 12614 问题,使用 volatile 修改​​waitingForPingResponse​​ 并发感知。

PR - 12607​[28]​:清理 ​​ProxyPublishConsumeTest​​。

PR - 12606​[29]​:避免在 ​​asyncAddEntry​​​ 中跨越线程边界传递 ​​OpAddEntry​​。

PR - 12602​[30]​:当 topic 压缩且关闭 ledger 时,不移动非持久性指针位置。

PR - 12600​[31]​:允许具有 ​​consume​​​ 权限的 ​​GetTopicsOfNamespace​​ 操作。

PR - 12598​[32]​:允许为系统 topic 配置 schema 兼容性策略。

PR - 12597​[33]​:清理已经删除的 namespace topic。

PR - 12585​[34]​:修复可能被提取到空目录的额外服务程序 NAR。

PR - 12582​[35]​:修复​​NamespaceService#checkHeartbeatNamespace​​ 中的日志拼写错误。

PR - 12570​[36]​:确认状态后,将 ​​OpAddEntry​​​ 加入到 ​​pendingAddEntries​​ 中。

PR - 12565​[37]​:在删除 ​​ManagedLedgerImpl​​ 后,取消调度任务。

PR - 12541​[38]​:为 PulsarVersion 加入 git 分支信息。

PR - 12539​[39]​:Websocket 应该将加密的上下文传递给 consumer。

PR - 12527​[40]​:如果 bundle 上的 topics 数少于2,将跳过 split 操作。

PR - 12522​[41]​:修复原始 ledger 已被删除的 reader,使其跳过压缩数据。

PR - 12493​[42]​:修复 ​​messageDedup​​ ,并删除不活跃的 producer 名字。

PR - 12470​[43]​:优化代码,即删除多余的空格。

PR - 12362​[44]​:以 ​​impl.MLPendingAckStore#closeAsync​​ 模式两次完成 Future。

PR - 12240​[45]​:修复取消订阅的竞态,并删除 topic。

PR - 12217​[46]​:禁用内置 Pulsar Client 的统计存储器。

PR - 12215​[47]​:当删除 topic 时,修复删除认证规则的漏洞。

PR - 12045​[48]​:优化 Cache Eviction 的内存使用。

PR - 12018​[49]​:避免重复添加 ​​BrokerEntryMetadata​​。

PR - 12015​[50]​:修复更新的 ledger 清单至 z-node 版本及 ledger 未删除问题。

PR - 11928​[51]​:修复 TopicPolicies 中的消息永远不会被清除的问题。

PR - 12212​[52]​:修复返回 consumer 错误的哈希阈值且名称重复的 consumer 问题。

PR - 11839​[53]​:将 ​​ Key_Shared metadata​​ 加入至 topic 统计中。

PR - 11795​[54]​:修复从子模块的构建问题(代理、事务协调器)。

PR - 11934​[55]​:增加清理事务缓冲区快照的方法。

PR - 11541​[56]​:提高 ​​transactionTest​​ 的稳定性。

PR - 13248​[57]​:增加 ​​maven.restlet.org​​ 代码仓库。

PR - 13117​[58]​:修正并改进 topic 所有权分配问题 #13069​[59]​。

PR - 13045​[60]​:仅评估 ​​CURRENT_PROTOCOL_VERSION​​ 一次。

PR - 12941​[61]​:恢复“设置默认 root 日志级别为调试”,并将 ​​PULSAR_LOG_ROOT_LEVEL​​​ 默认为 ​​PULSAR_LOG_LEVEL​​。

PR - 12853​[62]​:捕获调度任务中的异常,防止意外清除。

PR - 12846​[63]​:修复 topic 中 的 ​​producers​​ 映射中被错误移除的 producer 问题。

PR - 12820​[64]​:同步更新 MessageD 中的 ​​inactiveProducers​​ 映射。

PR - 12780​[65]​:在收到异常 ​​SendCommand​​ 时,关闭连接。

PR - 12699​[66]​:在创建订阅时,修复被覆盖忽略的命名空间策略。

PR - 12466​[67]​:将 lombok 更新至 1.18.22 版本。

PR - 12464​[68]​:修复跳过压缩数据的 reader/consumer 问题。

PR - 12456​[69]​:移除 ​​MultiTopicsConsumerImpl​​ 中的数据竞争,以保证正确的消息顺序。

PR - 12451​[70]​:修复重试 topic 中的 ​​REAL_TOPIC​​​ 和 ​​ORIGIN_MESSAGE_ID​​ 属性问题。

PR - 12447​[71]​:更改 producer 防护墙错误日志为调试级别。

PR - 12444​[72]​:减少 ​​readFailureBackoff​​ 次数。

PR - 12433​[73]​:修复 ​​NamespaceIsolationDataImpl#secondary​​ 中的错误属性名。

PR - 12431​[74]​:优化 SecurityUtility 代码流。

PR - 12429​[75]​:修复压缩器问题,使其跳过来自上一个被压缩 ledger 的数据。

PR - 12424​[76]​:移除冗余代码。

PR - 12417​[77]​:修复部分未在集成测试中启用的测试。

PR - 12409​[78]​:对超时任务​​ClientConnection​​ 使用弱引用。

PR - 12397​[79]​:修复 cherry-pick 问题。

PR - 12367​[80]​:修复删除系统 topic policy 导致的空点问题。

PR - 12350​[81]​:更新删除不活跃的 topic 配置文档。

PR - 12345​[82]​:将日志添加到输出有异常的堆栈。

PR - 12339​[83]​:避免在关键线程上潜在阻塞对元数据的调用。

PR - 12297​[84]​:当移除 Cursor 时,修正 NPE 问题。

PR - 12280​[85]​:当配置加载失败时,输出日志。

PR - 12277​[86]​:当 ​​lastConfirmedEntry​​ 带有错误的 entry ID 时,修复错误返回的最后消息 ID 问题。

PR - 12266​[87]​:修复过期 TTL 不生效的问题。

PR - 12252​[88]​:负载均衡器应该避免卸载 heartbeat namespace。

PR - 12237​[89]​:当最后一个消息 ID 来自压缩 ledger 时,修复返回的最后一个消息 ID 拼写错误的问题。

PR - 12225​[90]​:在 Prometheus 中,添加对 topic 分割和分区标签的支持。

PR - 12223​[91]​:修复丢失消息的问题 # 12221​[92]​。

PR - 12200​[93]​:在内存策略范围之外,允许配置 Pulsar 客户端分配器。

PR - 12188​[94]​:移除冗余参数。

PR - 12168​[95]​:修复测试中不正确的 logger 编号。

PR - 12161​[96]​:当原始数据已被删除时,返回最近一次压缩数据的位置。

PR - 12155​[97]​:在处理 schema 资源时,完善异常抛出问题。

PR - 12132​[98]​:修复 JWT 中的前缀设置问题,避免多次调用 getProperty。

PR - 12103​[99]​:修复 ​​OpAddEntry​​ 回收问题后的被使用问题。

PR - 12097​[100]​:修复 ​​rackAwarePlacementPolicy​​ 初始化错误的问题。

PR - 12035​[101]​:在所有之前的 consumer 断开连接之后,修复用于新的 consumer 的错误 key-hash 选择器问题。

PR - 11982​[102]​:修复 2.8 分支的 cherry-pick 问题。

PR - 11975​[103]​:删除 ​​NamespaceBundleFactory​​ 中未使用的变量和不必要的框。

PR - 11969​[104]​:在找不到下一个有效位置时,输出位置信息。

PR - 11947​[105]​:修复 NPE ​​ZkBookieRackAffinityMapping​​ 问题。

PR - 11937​[106]​:避免无限分割 bundle。

PR - 11922​[107]​:在没有流量时,完善暂停复制的订阅快照的逻辑。

PR - 11886​[108]​:修复 ​​ZKSessionTest.testReacquireLocksAfterSessionLost​​ 的问题。

PR - 11856​[109]​:在 Broker 级别中添加 Schema 兼容策略。

PR - 11771​[110]​:为 ​​BaseMetadataStoreTests​​​ 使用 ​​TestRetrySupport​​,以在重试时清理状态。

PR - 11718​[111]​:移除 ​​replace_maven-wagon-http-version.sh​​ 字符。

PR - 11655​[112]​:检查 null 或 empty,而不是捕获 NPE。

PR - 11640​[113]​:避免重复删除 schema。

PR - 11614​[114]​:修复无法启用​​subscribeRateLimiter​​ 的问题。

PR - 11606​[115]​:修复并发 schema 删除中的竞争条件问题。

PR - 11597​[116]​:为了避免阻塞,使用 ​​get​​​ 而不是 ​​join​​。

PR - 11513​[117]​:避免每次都调用 ​​getMaximumRolloverTimeMs​​。

PR - 10837​[118]​:修复错误的 class/method/field 修饰符问题。

PR - 10754​[119]​:支持 ​​max-connection​​​ 和 ​​max-connection-per-IP​​。

PR - 12292​[120]​:允许集成测试 Jar 部署至 Maven 中心。

C++ 客户端

PR - 13112​[121]​:当 broker 返回 307 时,修复 libcurl 错过 auth header 问题。

PR - 12769​[122]​:定义并暴露 ​​PULSAR_VERSION​​ 宏。

PR - 12586​[123]​:修复 ​​GetLastMessageId​​ 不运行的请求超时问题。

PR - 12492​[124]​:修复连接读取错误日志记录的问题。

PR - 12372​[125]​:延迟 ​​ClientCredentialFlow::initialize​​ 至第一次身份验证调用。

PR - 12341​[126]​:使用 URL 编码的内容类型进行 OAuth 2.0 身份验证。

PR - 12335​[127]​:优雅处理 OAuth 2.0 的异常情况。

PR - 12305​[128]​:支持配置 OAuth2 认证的可选范围字段。

PR - 11958​[129]​:修复尝试连接多个 IP 地址的问题。

PR - 11954​[130]​:处理在 fork 后关闭客户端时产生的错误。

PR - 11919​[131]​:将所有的 C 语言符号移到 C++ 语言的 Pulsar namespace 中。

PR - 11762​[132]​:使一些清理方法线程安全。

PR - 11668​[133]​:启用更多编译器警告,并将警告作为错误强制执行。

PR - 11630​[134]​:修复 ​​UnAckedMessageTrackerEnabled​​ 中 use-after-free 和构造漏洞问题。

PR - 11570​[135]​:允许分区的 producer 延迟启动。

Functions

PR - 12504​[136]​:K8s 运行时:强制删除,以避免连接器重启期间挂起 function worker。

PR - 12065​[137]​:修复 k8s Pulsar Functions 容器,使其不暴露于指标端口提取的问题。

PR - 11868​[138]​:启用 Function 的 ​​protobuf-native​​ schema 支持。

PR - 11831​[139]​:将 ​​SubscriptionPosition​​​ 从 ​​FunctionDetails​​​ 传递到 ​​FunctionConfig / SinkConfig​​。

PR - 10631​[140]​:重组 Functions 的上下文结构。

PR - 12080​[141]​:移除 HDFS 中已弃用的 API 使用。

PR - 12457​[142]​:在暂停连接器时,停止 ​​OffsetStore​​。

PR - 11990​[143]​:支持设置订阅位置。

PR - 11853​[144]​:同步至最新的 function proto。

PR - 12973​[145]​:修复 classloader 泄露的问题。

PR - 12246​[146]​:添加缺失的依赖关系。

PR - 11820​[147]​:将​​ConcurrentHashMap​​ 用于抓取 producer。

PR - 11706​[148]​:支持用于基于Java 的 function 和 sources的 ​​KEY_BASED​​ 批处理生成器。

Pulsar Admin

PR - 12709​[149]​:将 topic 内部信息以格式化的 JSON 形式输出。

PR - 12581​[150]​:修复最后一次退出代码存储的问题。

PR - 11683​[151]​:修复更新 topic 分区失败的问题。

PR - 12315​[152]​:完美判断 pulsar-admin 条件。

PR - 12915​[153]​:修复 pulsar-admin, pulsar -client 和 pulsar-perf 的日志级别配置问题。

PR - 12436​[154]​:修改命名空间的 set-properties 异常问题。

PR - 12349​[155]​:获取 schema 验证强制添加应用。

分层存储

PR - 12452​[156]​:添加重试功能以允许卸载索引文件读取失败。

PR - 12443​[157]​:修复 ​​readAsync​​ 卸载中的读取性能问题。

PR - 12309​[158]​:修复 ​​FileSystemManagedLedgerOffloader​​ 不能清除超时 ledger 的问题。

PR - 12123​[159]​:修复 ​​BlobStore readhandle​​ 中的潜在竞争条件问题。

Pulsar SQL

PR - 12809​[160]​:处理 ​​PulsarRecordCursor​​ 中消息为空的 schema 版本的问题。

PR - 12448​[161]​:Pulsar SQL 支持查询大容量 entry 数据。

Websocket 协议

PR - 12530​[162]​:为 WebSocket proxy 修复批消息 ack。

PR - 12458​[163]​:为 WebSocket 增加调试日志。

PR - 11459​[164]​:将 ​​System.out.println​​​ 从 ​​ConsumerHandler​​ 中移除。

 Java 客户端

PR - 11784​[165]​:移除 pulsar-client 中的不正确的 ​​VisableTesting​​注释。

PR - 11809​[166]​:修复程序包工具参数描述问题。

PR - 11931​[167]​:为 Pulsar Oauth2 Client 添加一个可选的参数范围。

PR - 13176​[168]​:修复 producer 数据竞争以获取 cnx。

PR - 13161​[169]​:在超时时,发送 CloseProducer。

PR - 12781​[170]​:使 producer 重新连接​​RegisteringSchema​​ 状态。

PR - 12779​[171]​:使用 epoch 到版本 producer cnx,以防止过早传递消息。

PR - 12673​[172]​:Pulsar Client:恢复​​SchemaInfo.builder() API​​。

PR - 12652​[173]​:删除无效调用 ​​Thread.currentThread().interrupt();​​。

PR - 12620​[174]​:在自动分区更新任务 ​​MultiTopicsConsumerImpl​​中,增加额外错误处理。

PR - 12588​[175]​:在第一次超时时,在日志消息中修复无效 ​​firstSentAt​​ 问题。

PR - 12500​[176]​:在 producer 关闭时,更新 producer 状态。

PR - 12308​[177]​:​​StartMessageId​​​ 和​​RollbackDuration​​​ 在​​MultiTopicsReader​​ 中不为非分区 topic 启用

PR - 12259​[178]​:使用 ​​failPendingMessages​​ 以保证正确的清理。

PR - 12170​[179]​:发生异常如直接内存不足后自动恢复。

PR - 12044​[180]​:修复 ​​MultiTopicsConsumer​​​ 中 ​​receiveAsync​​ 无穷循环问题。

PR - 11988​[181]​:使 OAuth2 Client Credentials 中的 ​​Audience​​ 字段可选。

PR - 11906​[182]​:在 producer 关闭时,忽略使用内存更新。

PR - 11884​[183]​:修复 ​​sendAsync​​​ 中的 ​​ConcurrentModificationException​​ 问题。

PR - 11828​[184]​:隐藏选项 -s 并替换为 -ss(0)。

PR - 11826​[185]​:修复获取重复消息的 ​​batchIndex​​ 级别查找。

PR - 11802​[186]​:减少非持久多主题 consumer 的冗余 FLOW 请求数量。

PR - 12469​[187]​:在 ​​NegativeAcksTracker​​ 类中,增加关闭方法。

PR - 12467​[188]​:修复 ​​UnAckedMessageTracker​​ 中的拼写错误问题。

PR - 12348​[189]​:在非持续性 topic reader 重新连接时,修复消息被忽略的问题。

PR - 12148​[190]​:修复分区 topic 下,​​deadLetterPolicy​​ 无法与键共享订阅同时启用的问题。

PR - 11939​[191]​:在 producer 关闭时,忽略调用 ​​SendCallback​​。

CLI

PR - 12641​[192]​:允许 CLI 发布非批处理消息。

PR - 12108​[193]​:允许禁用 ​​poolMessages​​。

PR - 12084​[194]​:在定期输出吞吐量时,添加总量消息。

PR - 12090​[195]​:允许禁用 ​​poolMessages​​。

Python Client

PR - 12642​[196]​:Python schema 支持为枚举类型自定义 Avro 配置。

PR - 12427​[197]​:通过重构 ​​ExecutorService​​ ,修复 Python 测试中频繁的段错误。

PR - 12175​[198]​:支持设置 Python schema 的命名空间。

PR - 12058​[199]​:强制 Python CI 使用支持 Python2 的 Protobuf 早期版本。

PR - 11840​[200]​:发生​​py::call_method​​ 错误不改变内部状态。

PR - 12516​[201]​:Python client 支持使用自定义 Avro schema 定义。

PR - 12092​[202]​:将 python3 从 vcpkg.json 中删除。

PR - 12593​[203]​:为 ​​BytesSchema​​​ 提供 ​​str​​ 算子。

PR - 12232​[204]​:默认情况下,不对 schema 字段进行排序。

PR - 12130​[205]​:默认 Python3 为 ​​java-test-image​​ 中的 Python 版本。

PR - 11955​[206]​:暴露 ​​Client.shutdown()​​ 方法。

Unit Test

PR - 12438​[207]​:Broker 资源组测试优化错误消息。

PR - 12398​[208]​:修复 Windows 测试路径问题。

PR - 12329​[209]​:让 ​​AuthenticationTokenTest​​ 在 Windows 上运行。

PR - 12143​[210]​:使用正确的行分隔符而不是 ​​\n​​。

BookKeeper

PR - 12666​[211]​:将​​readWorkerThreadsThrottlingEnabled​​​ 添加到 ​​conf/bookkeeper.conf​​。

PR - 12311​[212]​:将 UseV2WireProtocol 用作 BookKeeper 的自动恢复。

Proxy

PR - 12594​[213]​:减少 ​​KeyManagerProxy​​ 中的日志“refreshing key manager”提示。

PR - 11971​[214]​:设置默认 HTTP 代理请求超时。

PR - 12299​[215]​:设置默认 ​​httpProxyTimeout​​ 为 5 分钟。

PR - 12245​[216]​:修复 Pulsar proxy 以重用身份验证实例问题。

PR - 12111​[217]​:修复 ​​ProxyConnection​​ 中没有数据验证的 NPE 的问题。

PR - 12057​[218]​:修复 ​​ProxyConnection​​​ 以检查 ​​auth_data​​ 字段是否存在的问题。

参与其中

新版本使用

欢迎大家下载​[219]​并使用新版本!如果在使用中遇到问题,可以通过提 issue​[220]​ 或在微信群交流的方式抛出疑问并与社区交流。

加入 Apache Pulsar 社区

Pulsar 项目的成长来源于社区,也扎根于社区。一次次新版本的筹备与发布离不开社区伙伴们的贡献。你是否愿意成为其中的一员呢?参与开源,可以获得公司及社区内外的认可,结交来自各个领域、志同道合的小伙伴;同时也可以提高个人影响力,促进个人发展。参与开源不是码农的专属,社区、文档等各个方面都可以让大家发挥一技之长。

作为全球性开源项目,截至目前,Apache Pulsar 已拥有 513 名贡献者、10.5 K+ Star 、2.7 K+ Fork 。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache Pulsar 项目的不断发展与前进。

  • • Apache Pulsar 官方贡献指南

  • • 加入 Apache Pulsar 志愿者大家庭

引用链接

​​[1]​​ PR - 13392: ​https://github.com/apache/pulsar/pull/13392​

​​[2]​​ CVE-2021-45105: ​https://github.com/advisories/GHSA-p6xc-xr62-6r2g​

​​[3]​​ PR - 13328: ​https://github.com/apache/pulsar/pull/13328​

​​[4]​​ CVE-2021-43797: ​https://github.com/advisories/GHSA-wx5j-54mm-rqqq​

​​[5]​​ PR - 13133: ​https://github.com/apache/pulsar/pull/13133​

​​[6]​​ PR - 12963: ​https://github.com/apache/pulsar/pull/12963​

​​[7]​​ PR - 11681: ​https://github.com/apache/pulsar/pull/11681​

​​[8]​​ PR - 11660: ​https://github.com/apache/pulsar/pull/11660​

​​[9]​​ PR - 13069: ​https://github.com/apache/pulsar/pull/13069​

​​[10]​​ PR - 13066: ​https://github.com/apache/pulsar/pull/13066​

​​[11]​​ PR - 12993: ​https://github.com/apache/pulsar/pull/12993​

​​[12]​​ PR - 12873: ​https://github.com/apache/pulsar/pull/12873​

​​[13]​​ PR - 12773: ​https://github.com/apache/pulsar/pull/12773​

​​[14]​​ PR - 12742: ​https://github.com/apache/pulsar/pull/12742​

​​[15]​​ PR - 12729: ​https://github.com/apache/pulsar/pull/12729​

​​[16]​​ PR - 12721: ​https://github.com/apache/pulsar/pull/12721​

​​[17]​​ PR - 12714: ​https://github.com/apache/pulsar/pull/12714​

​​[18]​​ PR - 12698: ​https://github.com/apache/pulsar/pull/12698​

​​[19]​​ PR - 12675: ​https://github.com/apache/pulsar/pull/12675​

​​[20]​​ PR - 12656: ​https://github.com/apache/pulsar/pull/12656​

​​[21]​​ PR - 12650: ​https://github.com/apache/pulsar/pull/12650​

​​[22]​​ PR - 12647: ​https://github.com/apache/pulsar/pull/12647​

​​[23]​​ PR - 12640: ​https://github.com/apache/pulsar/pull/12640​

​​[24]​​ @test: ​https://github.com/test​

​​[25]​​ PR - 12622: ​https://github.com/apache/pulsar/pull/12622​

​​[26]​​ PR - 12619: ​https://github.com/apache/pulsar/pull/12619​

​​[27]​​ PR - 12615: ​https://github.com/apache/pulsar/pull/12615​

​​[28]​​ PR - 12607: ​https://github.com/apache/pulsar/pull/12607​

​​[29]​​ PR - 12606: ​https://github.com/apache/pulsar/pull/12606​

​​[30]​​ PR - 12602: ​https://github.com/apache/pulsar/pull/12602​

​​[31]​​ PR - 12600: ​https://github.com/apache/pulsar/pull/12600​

​​[32]​​ PR - 12598: ​https://github.com/apache/pulsar/pull/12598​

​​[33]​​ PR - 12597: ​https://github.com/apache/pulsar/pull/12597​

​​[34]​​ PR - 12585: ​https://github.com/apache/pulsar/pull/12585​

​​[35]​​ PR - 12582: ​https://github.com/apache/pulsar/pull/12582​

​​[36]​​ PR - 12570: ​https://github.com/apache/pulsar/pull/12570​

​​[37]​​ PR - 12565: ​https://github.com/apache/pulsar/pull/12565​

​​[38]​​ PR - 12541: ​https://github.com/apache/pulsar/pull/12541​

​​[39]​​ PR - 12539: ​https://github.com/apache/pulsar/pull/12539​

​​[40]​​ PR - 12527: ​https://github.com/apache/pulsar/pull/12527​

​​[41]​​ PR - 12522: ​https://github.com/apache/pulsar/pull/12522​

​​[42]​​ PR - 12493: ​https://github.com/apache/pulsar/pull/12493​

​​[43]​​ PR - 12470: ​https://github.com/apache/pulsar/pull/12470​

​​[44]​​ PR - 12362: ​https://github.com/apache/pulsar/pull/12362​

​​[45]​​ PR - 12240: ​https://github.com/apache/pulsar/pull/12240​

​​[46]​​ PR - 12217: ​https://github.com/apache/pulsar/pull/12217​

​​[47]​​ PR - 12215: ​https://github.com/apache/pulsar/pull/12215​

​​[48]​​ PR - 12045: ​https://github.com/apache/pulsar/pull/12045​

​​[49]​​ PR - 12018: ​https://github.com/apache/pulsar/pull/12018​

​​[50]​​ PR - 12015: ​https://github.com/apache/pulsar/pull/12015​

​​[51]​​ PR - 11928: ​https://github.com/apache/pulsar/pull/11928​

​​[52]​​ PR - 12212: ​https://github.com/apache/pulsar/pull/12212​

​​[53]​​ PR - 11839: ​https://github.com/apache/pulsar/pull/11839​

​​[54]​​ PR - 11795: ​https://github.com/apache/pulsar/pull/11795​

​​[55]​​ PR - 11934: ​https://github.com/apache/pulsar/pull/11934​

​​[56]​​ PR - 11541: ​https://github.com/apache/pulsar/pull/11541​

​​[57]​​ PR - 13248: ​https://github.com/apache/pulsar/pull/13248​

​​[58]​​ PR - 13117: ​https://github.com/apache/pulsar/pull/13117​

​​[59]​​ #13069: ​https://github.com/apache/pulsar/pull/13069​

​​[60]​​ PR - 13045: ​https://github.com/apache/pulsar/pull/13045​

​​[61]​​ PR - 12941: ​https://github.com/apache/pulsar/pull/12941​

​​[62]​​ PR - 12853: ​https://github.com/apache/pulsar/pull/12853​

​​[63]​​ PR - 12846: ​https://github.com/apache/pulsar/pull/12846​

​​[64]​​ PR - 12820: ​https://github.com/apache/pulsar/pull/12820​

​​[65]​​ PR - 12780: ​https://github.com/apache/pulsar/pull/12780​

​​[66]​​ PR - 12699: ​https://github.com/apache/pulsar/pull/12699​

​​[67]​​ PR - 12466: ​https://github.com/apache/pulsar/pull/12466​

​​[68]​​ PR - 12464: ​https://github.com/apache/pulsar/pull/12464​

​​[69]​​ PR - 12456: ​https://github.com/apache/pulsar/pull/12456​

​​[70]​​ PR - 12451: ​https://github.com/apache/pulsar/pull/12451​

​​[71]​​ PR - 12447: ​https://github.com/apache/pulsar/pull/12447​

​​[72]​​ PR - 12444: ​https://github.com/apache/pulsar/pull/12444​

​​[73]​​ PR - 12433: ​https://github.com/apache/pulsar/pull/12433​

​​[74]​​ PR - 12431: ​https://github.com/apache/pulsar/pull/12431​

​​[75]​​ PR - 12429: ​https://github.com/apache/pulsar/pull/12429​

​​[76]​​ PR - 12424: ​https://github.com/apache/pulsar/pull/12424​

​​[77]​​ PR - 12417: ​https://github.com/apache/pulsar/pull/12417​

​​[78]​​ PR - 12409: ​https://github.com/apache/pulsar/pull/12409​

​​[79]​​ PR - 12397: ​https://github.com/apache/pulsar/pull/12397​

​​[80]​​ PR - 12367: ​https://github.com/apache/pulsar/pull/12367​

​​[81]​​ PR - 12350: ​https://github.com/apache/pulsar/pull/12350​

​​[82]​​ PR - 12345: ​https://github.com/apache/pulsar/pull/12345​

​​[83]​​ PR - 12339: ​https://github.com/apache/pulsar/pull/12339​

​​[84]​​ PR - 12297: ​https://github.com/apache/pulsar/pull/12297​

​​[85]​​ PR - 12280: ​https://github.com/apache/pulsar/pull/12280​

​​[86]​​ PR - 12277: ​https://github.com/apache/pulsar/pull/12277​

​​[87]​​ PR - 12266: ​https://github.com/apache/pulsar/pull/12266​

​​[88]​​ PR - 12252: ​https://github.com/apache/pulsar/pull/12252​

​​[89]​​ PR - 12237: ​https://github.com/apache/pulsar/pull/12237​

​​[90]​​ PR - 12225: ​https://github.com/apache/pulsar/pull/12225​

​​[91]​​ PR - 12223: ​https://github.com/apache/pulsar/pull/12223​

​​[92]​​ # 12221: ​https://github.com/apache/pulsar/issues/12221​

​​[93]​​ PR - 12200: ​https://github.com/apache/pulsar/pull/12200​

​​[94]​​ PR - 12188: ​https://github.com/apache/pulsar/pull/12188​

​​[95]​​ PR - 12168: ​https://github.com/apache/pulsar/pull/12168​

​​[96]​​ PR - 12161: ​https://github.com/apache/pulsar/pull/12161​

​​[97]​​ PR - 12155: ​https://github.com/apache/pulsar/pull/12155​

​​[98]​​ PR - 12132: ​https://github.com/apache/pulsar/pull/12132​

​​[99]​​ PR - 12103: ​https://github.com/apache/pulsar/pull/12103​

​​[100]​​ PR - 12097: ​https://github.com/apache/pulsar/pull/12097​

​​[101]​​ PR - 12035: ​https://github.com/apache/pulsar/pull/12035​

​​[102]​​ PR - 11982: ​https://github.com/apache/pulsar/pull/11982​

​​[103]​​ PR - 11975: ​https://github.com/apache/pulsar/pull/11975​

​​[104]​​ PR - 11969: ​https://github.com/apache/pulsar/pull/11969​

​​[105]​​ PR - 11947: ​https://github.com/apache/pulsar/pull/11947​

​​[106]​​ PR - 11937: ​https://github.com/apache/pulsar/pull/11937​

​​[107]​​ PR - 11922: ​https://github.com/apache/pulsar/pull/11922​

​​[108]​​ PR - 11886: ​https://github.com/apache/pulsar/pull/11886​

​​[109]​​ PR - 11856: ​https://github.com/apache/pulsar/pull/11856​

​​[110]​​ PR - 11771: ​https://github.com/apache/pulsar/pull/11771​

​​[111]​​ PR - 11718: ​https://github.com/apache/pulsar/pull/11718​

​​[112]​​ PR - 11655: ​https://github.com/apache/pulsar/pull/11655​

​​[113]​​ PR - 11640: ​https://github.com/apache/pulsar/pull/11640​

​​[114]​​ PR - 11614: ​https://github.com/apache/pulsar/pull/11614​

​​[115]​​ PR - 11606: ​https://github.com/apache/pulsar/pull/11606​

​​[116]​​ PR - 11597: ​https://github.com/apache/pulsar/pull/11597​

​​[117]​​ PR - 11513: ​https://github.com/apache/pulsar/pull/11513​

​​[118]​​ PR - 10837: ​https://github.com/apache/pulsar/pull/10837​

​​[119]​​ PR - 10754: ​https://github.com/apache/pulsar/pull/10754​

​​[120]​​ PR - 12292: ​https://github.com/apache/pulsar/pull/12292​

​​[121]​​ PR - 13112: ​https://github.com/apache/pulsar/pull/13112​

​​[122]​​ PR - 12769: ​https://github.com/apache/pulsar/pull/12769​

​​[123]​​ PR - 12586: ​https://github.com/apache/pulsar/pull/12586​

​​[124]​​ PR - 12492: ​https://github.com/apache/pulsar/pull/12492​

​​[125]​​ PR - 12372: ​https://github.com/apache/pulsar/pull/12372​

​​[126]​​ PR - 12341: ​https://github.com/apache/pulsar/pull/12341​

​​[127]​​ PR - 12335: ​https://github.com/apache/pulsar/pull/12335​

​​[128]​​ PR - 12305: ​https://github.com/apache/pulsar/pull/12305​

​​[129]​​ PR - 11958: ​https://github.com/apache/pulsar/pull/11958​

​​[130]​​ PR - 11954: ​https://github.com/apache/pulsar/pull/11954​

​​[131]​​ PR - 11919: ​https://github.com/apache/pulsar/pull/11919​

​​[132]​​ PR - 11762: ​https://github.com/apache/pulsar/pull/11762​

​​[133]​​ PR - 11668: ​https://github.com/apache/pulsar/pull/11668​

​​[134]​​ PR - 11630: ​https://github.com/apache/pulsar/pull/11630​

​​[135]​​ PR - 11570: ​https://github.com/apache/pulsar/pull/11570​

​​[136]​​ PR - 12504: ​https://github.com/apache/pulsar/pull/12504​

​​[137]​​ PR - 12065: ​https://github.com/apache/pulsar/pull/12065​

​​[138]​​ PR - 11868: ​https://github.com/apache/pulsar/pull/11868​

​​[139]​​ PR - 11831: ​https://github.com/apache/pulsar/pull/11831​

​​[140]​​ PR - 10631: ​https://github.com/apache/pulsar/pull/10631​

​​[141]​​ PR - 12080: ​https://github.com/apache/pulsar/pull/12080​

​​[142]​​ PR - 12457: ​https://github.com/apache/pulsar/pull/12457​

​​[143]​​ PR - 11990: ​https://github.com/apache/pulsar/pull/11990​

​​[144]​​ PR - 11853: ​https://github.com/apache/pulsar/pull/11853​

​​[145]​​ PR - 12973: ​https://github.com/apache/pulsar/pull/12973​

​​[146]​​ PR - 12246: ​https://github.com/apache/pulsar/pull/12246​

​​[147]​​ PR - 11820: ​https://github.com/apache/pulsar/pull/11820​

​​[148]​​ PR - 11706: ​https://github.com/apache/pulsar/pull/11706​

​​[149]​​ PR - 12709: ​https://github.com/apache/pulsar/pull/12709​

​​[150]​​ PR - 12581: ​https://github.com/apache/pulsar/pull/12581​

​​[151]​​ PR - 11683: ​https://github.com/apache/pulsar/pull/11683​

​​[152]​​ PR - 12315: ​https://github.com/apache/pulsar/pull/12315​

​​[153]​​ PR - 12915: ​https://github.com/apache/pulsar/pull/12915​

​​[154]​​ PR - 12436: ​https://github.com/apache/pulsar/pull/12436​

​​[155]​​ PR - 12349: ​https://github.com/apache/pulsar/pull/12349​

​​[156]​​ PR - 12452: ​https://github.com/apache/pulsar/pull/12452​

​​[157]​​ PR - 12443: ​https://github.com/apache/pulsar/pull/12443​

​​[158]​​ PR - 12309: ​https://github.com/apache/pulsar/pull/12309​

​​[159]​​ PR - 12123: ​https://github.com/apache/pulsar/pull/12123​

​​[160]​​ PR - 12809: ​https://github.com/apache/pulsar/pull/12809​

​​[161]​​ PR - 12448: ​https://github.com/apache/pulsar/pull/12448​

​​[162]​​ PR - 12530: ​https://github.com/apache/pulsar/pull/12530​

​​[163]​​ PR - 12458: ​https://github.com/apache/pulsar/pull/12458​

​​[164]​​ PR - 11459: ​https://github.com/apache/pulsar/pull/11459​

​​[165]​​ PR - 11784: ​https://github.com/apache/pulsar/pull/11784​

​​[166]​​ PR - 11809: ​https://github.com/apache/pulsar/pull/11809​

​​[167]​​ PR - 11931: ​https://github.com/apache/pulsar/pull/11931​

​​[168]​​ PR - 13176: ​https://github.com/apache/pulsar/pull/13176​

​​[169]​​ PR - 13161: ​https://github.com/apache/pulsar/pull/13161​

​​[170]​​ PR - 12781: ​https://github.com/apache/pulsar/pull/12781​

​​[171]​​ PR - 12779: ​https://github.com/apache/pulsar/pull/12779​

​​[172]​​ PR - 12673: ​https://github.com/apache/pulsar/pull/12673​

​​[173]​​ PR - 12652: ​https://github.com/apache/pulsar/pull/12652​

​​[174]​​ PR - 12620: ​https://github.com/apache/pulsar/pull/12620​

​​[175]​​ PR - 12588: ​https://github.com/apache/pulsar/pull/12588​

​​[176]​​ PR - 12500: ​https://github.com/apache/pulsar/pull/12500​

​​[177]​​ PR - 12308: ​https://github.com/apache/pulsar/pull/12308​

​​[178]​​ PR - 12259: ​https://github.com/apache/pulsar/pull/12259​

​​[179]​​ PR - 12170: ​https://github.com/apache/pulsar/pull/12170​

​​[180]​​ PR - 12044: ​https://github.com/apache/pulsar/pull/12044​

​​[181]​​ PR - 11988: ​https://github.com/apache/pulsar/pull/11988​

​​[182]​​ PR - 11906: ​https://github.com/apache/pulsar/pull/11906​

​​[183]​​ PR - 11884: ​https://github.com/apache/pulsar/pull/11884​

​​[184]​​ PR - 11828: ​https://github.com/apache/pulsar/pull/11828​

​​[185]​​ PR - 11826: ​https://github.com/apache/pulsar/pull/11826​

​​[186]​​ PR - 11802: ​https://github.com/apache/pulsar/pull/11802​

​​[187]​​ PR - 12469: ​https://github.com/apache/pulsar/pull/12469​

​​[188]​​ PR - 12467: ​https://github.com/apache/pulsar/pull/12467​

​​[189]​​ PR - 12348: ​https://github.com/apache/pulsar/pull/12348​

​​[190]​​ PR - 12148: ​https://github.com/apache/pulsar/pull/12148​

​​[191]​​ PR - 11939: ​https://github.com/apache/pulsar/pull/11939​

​​[192]​​ PR - 12641: ​https://github.com/apache/pulsar/pull/12641​

​​[193]​​ PR - 12108: ​https://github.com/apache/pulsar/pull/12108​

​​[194]​​ PR - 12084: ​https://github.com/apache/pulsar/pull/12084​

​​[195]​​ PR - 12090: ​https://github.com/apache/pulsar/pull/12090​

​​[196]​​ PR - 12642: ​https://github.com/apache/pulsar/pull/12642​

​​[197]​​ PR - 12427: ​https://github.com/apache/pulsar/pull/12427​

​​[198]​​ PR - 12175: ​https://github.com/apache/pulsar/pull/12175​

​​[199]​​ PR - 12058: ​https://github.com/apache/pulsar/pull/12058​

​​[200]​​ PR - 11840: ​https://github.com/apache/pulsar/pull/11840​

​​[201]​​ PR - 12516: ​https://github.com/apache/pulsar/pull/12516​

​​[202]​​ PR - 12092: ​https://github.com/apache/pulsar/pull/12092​

​​[203]​​ PR - 12593: ​https://github.com/apache/pulsar/pull/12593​

​​[204]​​ PR - 12232: ​https://github.com/apache/pulsar/pull/12232​

​​[205]​​ PR - 12130: ​https://github.com/apache/pulsar/pull/12130​

​​[206]​​ PR - 11955: ​https://github.com/apache/pulsar/pull/11955​

​​[207]​​ PR - 12438: ​https://github.com/apache/pulsar/pull/12438​

​​[208]​​ PR - 12398: ​https://github.com/apache/pulsar/pull/12398​

​​[209]​​ PR - 12329: ​https://github.com/apache/pulsar/pull/12329​

​​[210]​​ PR - 12143: ​https://github.com/apache/pulsar/pull/12143​

​​[211]​​ PR - 12666: ​https://github.com/apache/pulsar/pull/12666​

​​[212]​​ PR - 12311: ​https://github.com/apache/pulsar/pull/12311​

​​[213]​​ PR - 12594: ​https://github.com/apache/pulsar/pull/12594​

​​[214]​​ PR - 11971: ​https://github.com/apache/pulsar/pull/11971​

​​[215]​​ PR - 12299: ​https://github.com/apache/pulsar/pull/12299​

​​[216]​​ PR - 12245: ​https://github.com/apache/pulsar/pull/12245​

​​[217]​​ PR - 12111: ​https://github.com/apache/pulsar/pull/12111​

​​[218]​​ PR - 12057: ​https://github.com/apache/pulsar/pull/12057​

​​[219]​​ 下载: ​https://pulsar.apache.org/download​

​​[220]​​ 提 issue: ​https://github.com/apache/pulsar/issues​

​​[221]​​ Apache Pulsar 官方贡献指南: ​http://pulsar.apache.org/en/contributing/​


▼ 关注「Apache Pulsar」,获取更多技术干货 ▼

???????? 加入 Apache Pulsar 中文交流群 ???????? 




网友评论