首页/新闻资讯/正文详情

Apache Pulsar 2.0 命名体系变革解析:Property 到 Tenant 与 Topic 命名规则演进

发布时间:2026/9/28 3:05:06 来源:云帆数科 栏目:资讯中心
Apache Pulsar 2.0 命名体系变革解析:Property 到 Tenant 与 Topic 命名规则演进
消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载Apache Pulsar 2.0 是一次带来重大变更的主版本发布其中最直接影响日常使用的是property属性术语被tenant租户取代、Topic 全名中的 cluster 组件被移除以及随之而来的灵活shorthand命名规则。本文以 2.3.2 版本文档为主体结合仓库中 TopicName.java 等源码实现系统梳理这些变更的来龙去脉、新旧格式的兼容机制与底层解析逻辑帮助你在升级或新建集群时正确书写 Topic 名称、使用管理命令并理解旧集群数据为何无需迁移即可继续访问。Pulsar 2.0 的新特性与重大变更概览Pulsar 2.0 对平台做了若干大胆的bold改变除了引入新特性之外还包含可能显著影响日常使用的重大变更。变更概览如下表特性 / 变更说明Pulsar Functions面向 Pulsar 的轻量级计算lightweight compute能力作为 2.0 新特性加入Properties → Tenants统一术语property更名为tenant管理接口随之调整Topic 命名简化移除 Topic 全名中的 cluster 组件引入默认值驱动的灵活命名其它术语调整部分场景仍保留旧术语但已标记为 deprecated将在未来版本彻底移除其中 Pulsar Functions 允许直接在 Pulsar 集群内运行无状态、轻量级的处理逻辑如bin/pulsar-admin functions create命令本文不展开其细节重点聚焦命名体系的两项重大变更。重大变更一Properties 与 Tenants 的术语统一在 2.0 之前Pulsar 使用property属性概念作为多租户隔离的基本单位。从 2.0 开始property 术语被移除因为property 与 tenant 本质上就是同一个东西统一为tenant租户可以显著降低认知成本。管理接口的对应变化命令行管理接口是变化最直观的体现原先的pulsar-admin properties接口被pulsar-admin tenants接口取代。以 2.3.2 版本仓库中的 reference-pulsar-admin.md 为据tenants命令的用法与子命令如下$ pulsar-admin tenants subcommand支持的子命令包括list列出当前实例中已有的租户get获取某个租户的配置create创建新租户update更新租户配置delete删除租户例如查看 admin-api-tenants.md 中的创建示例$ pulsar-admin tenants create my-tenant对应的 REST API 为GET /admin/v2/tenants等/admin/v2路径下的接口Java 客户端则对应admin.tenants().getTenants()一类方法调用。源码中的术语残留从源码结构看虽然 2.0 已将术语统一为 tenant但在个别底层 API 中仍能看到旧时代痕迹。例如 TopicName.java 中的getCluster()方法被标注了Deprecated并在注释中说明其仅在旧命名格式下有意义旧格式persistent://tenant/cluster/namespace/topic包含 cluster 段而新格式persistent://tenant/namespace/topic没有。这印证了原文档部分场景仍使用旧术语、但已弃用并将在未来版本移除的说明——在代码层面cluster 字段在新命名下为null。重大变更二Topic 命名规则重构2.0 之前的完整 Topic 名格式在 2.0 之前所有Pulsar Topic 的名称都具有如下形式{persistent|non-persistent}://property/cluster/namespace/topic即四个组成部分Topic 类型持久化/非持久化、property、cluster、namespace 和 Topic 名。这种格式要求使用者时刻关心 Topic 属于哪个集群在跨集群部署和客户端连接时容易写错。2.0 的 Topic 命名变化Pulsar 2.0 对 Topic 命名做出了如下核心调整不再有 cluster 组件见下文移除 Cluster 组件property 更名为 tenant见上文引入灵活flexible命名系统很多场景下可以使用更短的名称/斜杠不允许出现在 Topic 名称中——因为斜杠是各段之间的分隔符TopicName.java 的解析逻辑正是按/切分来识别 tenant、namespace 与 localName 的Topic 名localName本身若含斜杠将破坏结构移除 Cluster 组件cluster 组件从 Topic 全名中移除后所有 Topic 名称的新形式为{persistent|non-persistent}://tenant/namespace/topic使用旧格式命名、已经存在的 Topic 将继续正常工作无需任何修改官方也没有改变这一兼容策略的计划。这意味着存量集群可以平滑过渡到 2.0无需迁移数据或改名。源码中的新旧格式共存逻辑新旧两种格式之所以能共存关键在 TopicName.java 的构造函数解析逻辑。其核心思路是若名称不含://视为短名short name按段数补全1 段补全为persistent://public/default/topic3 段补全为persistent://tenant/namespace/topic其余情况报IllegalArgumentException若含://对://之后的剩余部分按/切分3 段tenant/namespace/localName判定为新格式V2此时cluster null4 段tenant/cluster/namespace/localName判定为旧格式legacy保留 clusterisV2() 的实现即为return cluster null一目了然。TopicDomain 枚举同样只保留两种合法类型定义于 TopicDomain.javapublic enum TopicDomain { persistent(persistent), non_persistent(non-persistent); ... }客户端侧对非法名称的拦截也依赖这套解析例如 PulsarClientImpl.java 在创建 producer/consumer 前调用TopicName.isValid(topic)校验失败即抛异常从源头保证写入的 Topic 名必然符合上述规则。灵活FlexibleTopic 命名与默认值新命名系统之所以灵活是因为 2.0 引入了默认的 Topic 类型、默认租户与默认命名空间Topic 要素默认值topic 类型persistenttenantpublicnamespacedefault下表给出利用隐式默认值进行名称翻译的示例输入的 Topic 名翻译后的完整 Topic 名my-topicpersistent://public/default/my-topicmy-tenant/my-namespace/my-topicpersistent://my-tenant/my-namespace/my-topic这两个翻译结果与 TopicName.java 中短名补全逻辑的产出完全一致my-topic只有 1 段补上PUBLIC_TENANTpublic与DEFAULT_NAMESPACEdefaultmy-tenant/my-namespace/my-topic有 3 段直接补上persistent://前缀。仓库中大量示例也直接使用这种简写例如 client-libraries-java.md 中的.topic(my-topic)与 functions-overview.md 中--inputs persistent://public/default/sentences的完整写法并存。非持久化 Topic 的例外必须使用完整名称对于非持久化 Topicnon-persistent topics你必须继续写全整个 Topic 名称因为持久化 Topic 的默认值补全规则不适用于非持久化 Topic。因此你不能使用non-persistent://my-topic这样的简写而必须写成non-persistent://public/default/my-topic。这一约束同样能在源码中找到依据短名补全逻辑TopicName.java对不含://的名称一律按persistent类型补全TopicDomain.persistent是唯一的隐式默认一旦你显式写出non-persistent://前缀就必须同时给出 tenant 与 namespace 两段否则 3 段/1 段之外的切分结果会直接抛出IllegalArgumentException。关于非持久化 Topic 的更多背景可参考 concepts-messaging.md 中的说明其消息只存于内存、不落盘 BookKeeperbroker 故障或订阅者断开会导致在途消息丢失且其名称形式为non-persistent://tenant/namespace/topic因此使用前务必确认场景能容忍消息丢失。从源码看 Topic 名的规范化与内部表示理解了新旧格式后再深入一步TopicName对象不仅是字符串解析结果还是路由、持久化与查找的关键标识。名称归一化与缓存TopicName.java 使用 GuavaLoadingCache最大 10 万条、30 分钟无访问过期缓存解析结果所有TopicName.get(...)调用都经过缓存避免高频创建 producer/consumer 时反复解析字符串。构造函数L110-L185在完成段切分后会根据isV2()的结果把completeTopicName重写为标准形式V2 格式%s://%s/%s/%sdomain/tenant/namespace/localName旧格式%s://%s/%s/%s/%sdomain/tenant/cluster/namespace/localName也就是说即使你传入的是my-topic短名最终得到的TopicName.toString()也是完整的persistent://public/default/my-topic。不同场景下的序列化形式同一个TopicName对象在不同场景下会输出不同的路径形式getRestPath()L307-L318供管理 Web 服务使用的 REST 路径如persistent/my-tenant/my-namespace/my-topic注意://变成了/getLookupName()L348-L354用于 Topic 查找lookup如persistent/my-tenant/my-namespace/my-topicgetPersistenceNamingEncoding()L325-L336持久化资源的相对路径按tenant/namespace/domain/topic顺序组织将 domain 也作为路径段之一。无论哪种形式V2 与 legacy 的差别始终体现在是否包含 cluster 段上这与原文档描述的命名变化完全吻合。分区 Topic 的命名约定虽然原文档未展开但命名规则还隐含了分区 Topic 的约定PARTITIONED_TOPIC_SUFFIX 为-partition-第 N 个分区的名称为topic-partition-NL237-L243getPartitionedTopicName()则负责从分区名还原出基础 Topic 名。书写或解析名称时需留意这一后缀保留在 localName 中。迁移与实战建议综合原文档与仓库现状给出以下实操要点旧集群无需迁移采用persistent://tenant/cluster/namespace/topic旧格式的存量 Topic 会继续工作官方无变更计划可放心升级。新代码一律使用新格式新建 Topic 时推荐写全persistent://tenant/namespace/topic或non-persistent://...避免歧义仅在明确依赖默认值时可使用my-topic这类短名。非持久化 Topic 必须写全名non-persistent://public/default/my-topic不能使用non-persistent://my-topic简写。管理命令使用 tenants统一使用bin/pulsar-admin tenants create/list/get/update/delete不要再使用properties系列命令。注意名称合法性localName 中不要出现/否则会被解析器当作段分隔符并导致IllegalArgumentException客户端在创建 producer/consumer 前即会通过TopicName.isValid拦截非法名称。如果需要验证客户端 API 中短名与完整名的实际用法可在 client-libraries-java.md、client-libraries-cpp.md 等文档中查看.topic(my-topic)形式的示例需要确认租户管理命令的完整参数可继续阅读 admin-api-tenants.md 与 reference-pulsar-admin.md。小结Pulsar 2.0 通过property→tenant术语统一与 Topic 命名去 cluster 化显著降低了多租户与跨集群场景下的心智负担并用默认 tenant 默认 namespace 默认类型的灵活命名规则让日常使用更加简洁。仓库源码表明这些变更并非简单替换字符串而是内建在 TopicName 的解析与归一化逻辑之中新旧格式由段数自动识别、cluster段缺失即视为 V2、旧格式 Topic 兼容访问。理解这套规则无论迁移存量集群还是编写新客户端代码都能少踩名称不合法的坑。赞分享消息队列后端流处理【免费下载链接】pulsarApache Pulsar - distributed pub-sub messaging system项目地址https://gitcode.com/gh_mirrors/pulsar28/pulsar点击查看免费下载相关推荐Apache Pulsar 2.0 版本关键变更解析Tenant 命名体系与 Topic 名称重构Apache Pulsar 2.0 版本关键变更解析Tenant 命名体系与 Topic 名称重构 Pulsar 2.0 是 Apache Pulsar 历史消息队列后端流处理Apache Pulsar 2.0 升级指南Tenant 命名体系、Topic 名称简化与 Pulsar Functions 新特性Apache Pulsar 2.0 升级指南Tenant 命名体系、Topic 名称简化与 Pulsar Functions 新特性 本篇技术指南以 Puls消息队列后端流处理Apache Pulsar 2.0 版本指南Pulsar Functions 新特性与 Topic 命名体系变革Apache Pulsar 2.0 版本指南Pulsar Functions 新特性与 Topic 命名体系变革 Apache Pulsar 2.0 是 Pu消息队列后端流处理上一篇10分钟跑通采购比价引擎用FastGPT搭建自动比价的实战指南下一篇色彩表示系统完全指南Munsell色彩体系与十六进制编码解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

现代智能雷达技术13——阵列与成像 (2)
现代智能雷达技术13——阵列与成像 (2)

合成孔径雷达(SAR)通过运动天线在时间上积累回波相位,实现虚拟大孔径,突破瑞利极限,达成高分辨率成像。其核心原理是“以动制静”,将时间维度转化为空间分辨率,使卫星或飞机在数百公里外仍可穿透… · 2026/9/28 3:05:05

h5制作平台免费推荐与最佳实践避坑指南
h5制作平台免费推荐与最佳实践避坑指南

h5制作平台免费推荐与最佳实践避坑指南 改个需求建站公司拖一周,这种憋屈感谁懂?很多运营和创业者找外包做H5活动页,前期沟通热火朝天,一旦上线要改个按钮颜色或者文案,对方就开始“排期”、“走流程”。这时候你会发现,掌握… · 2026/9/28 3:05:05

FontForge 视图菜单(View Menu)完全指南:从缩放导航到网格拟合的显示控制详解
FontForge 视图菜单(View Menu)完全指南:从缩放导航到网格拟合的显示控制详解

桌面应用图形学 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 点击查看 免费下载 导读 本文以 FontForge 官方用户手册中的「View Menu(视图菜单&… · 2026/9/28 3:04:58

Spingboot启动预热的实现
Spingboot启动预热的实现

启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/28 3:40:12

Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment
Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment

文章主要内容总结 本文研究了多模态大语言模型(具体为ChatGPT-4o)利用静态行车记录仪图像进行类人交通场景解读的潜力,重点聚焦与老年司机评估相关的三项任务:交通密度评估、交叉口可见性评估和停车标志识别。这些任务需上下文推理而非简单目标检测。研究采用零样本、少样… · 2026/9/28 3:32:43

Leveraging Large Language Models for Classifying App Users‘ Feedback
Leveraging Large Language Models for Classifying App Users‘ Feedback

文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)解决应用用户反馈分类的挑战,传统方法依赖有监督机器学习,但受限于标注数据集的规模和质量。研究通过三个核心实验评估了4种先进LLMs(GPT-3.5-Turbo、GPT-4o、Flan-T5、Llama3-70b)的性能: LLMs在用户反馈分类中的基… · 2026/9/28 3:32:43

Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...
Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...

文章主要内容总结 本文通过实验评估了大型语言模型(LLMs)在奥地利及欧盟增值税(VAT)法框架下辅助法律决策的能力。研究聚焦于两种提升LLM性能的方法——微调(fine-tuning)和检索增强生成(RAG),并在两类案例中进行验证:一是权威教科书案例,二是税务咨询公司的真实案… · 2026/9/28 3:32:43

学Java别走弯路,这5个方向最吃香
学Java别走弯路,这5个方向最吃香

学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/28 3:32:15

AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions
AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions

AlphaAgents相关总结与翻译 一、文章主要内容总结 (一)研究背景与问题 传统股票投资组合管理依赖人类分析师处理海量信息(如财务披露、财报、市场新闻等),存在信息处理效率低、易受认知偏差(如损失厌恶、过度自信)影响的问题,可能错失投资收益机会。尽管AI在数据处理… · 2026/9/28 3:32:08

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

制作网页比较方便的软件怎么选?一文搞懂避坑指南
制作网页比较方便的软件怎么选?一文搞懂避坑指南

制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略

济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码