目录

1、Tenants 租户

2、Namespaces 命名空间

3、命名空间更改记录方案和主题级策略


// 租户可以作为一个独立的管理单元

// 租户->命名空间->主题

persistent://tenant/namespace/topic

        正如你所见,租户是主题分类的最基本的单元(比命名空间和主题名称更加基础)。

1、Tenants 租户

对于 Pulsar 实例中的每个租户,你可以进行以下配置:

  • 一个认证授权方案 // 授权认证
  • 一组集群节点,作为租户配置应用的载体 // 存储消息等等,指定租户运行在哪些节点上

2、Namespaces 命名空间

租户和命名空间是 Pulsar 支持多租户方案的两个关键概念:

  • Pulsar 为指定的租户提供服务,并将适当的存储容量分配给租户。// Pulsar 服务的基础就是租户
  • 名称空间是租户中的管理单元的命名。在命名空间上设置的配置策略,会运用到该命名空间中创建的所有主题上。租户可以创建多个命名空间(通过 REST API 和 Pulsar Admin CLI 工具等自我管理途径)例如,拥有不同应用程序的租户,可以为每一个应用程序创建不同的命名空间。

        同一命名空间中主题的名称如下所示:

persistent://tenant/app1/topic-1
persistent://tenant/app1/topic-2
persistent://tenant/app1/topic-3

3、命名空间更改记录方案和主题级策略

为了有效地支持主题级策略,提出了命名空间更改事件方案,在这种方案中,Pulsar 被用作事件日志来存储命名空间的更改操作(比如,主题策略更改),这种方案有几个好处:// 使用 Pulsar 作为一个事件日志来记录主题级的变更操作,该机制需要引入系统主题,遵循发布订阅模式

  • 避免使用 ZooKeeper 以及向 ZooKeeper 引入更多负载。
  • 使用 Pulsar 作为事件日志用来支持传播策略的缓存。该事件日志可以有效地进行扩展。
  • 可以使用 Pulsar SQL 查询命名空间的变化,并对系统进行审计。

 每个命名空间都有一个名为 __change_events 的系统主题。这个系统主题用来存储指定命名空间的更改操作记录。下图说明了如何利用该机制来更新主题级策略:// 通过发布订阅模式

pulsar namespace 租户 pulsar 多租户_pulsar namespace 租户

  1. Pulsar Admin 客户端使用 API 更改主题级策略。
  2. 任何接收到 Admin HTTP 请求的 Broker,都会将此次主题级策略的更改操作发布到命名空间中的系统主题上(__change_events)。// 发布
  3. 每一个拥有命名空间的 Broker,都会订阅系统主题(__change_events),并接收命名空间的更改操作消息(事件)。// 订阅
  4. 当 Broker 接收到更改消息后,都会把该更改应用到它的策略缓存上。// 更改策略
  5. 当策略缓存被更新后,Broker 会将响应消息发送回 Pulsar Admin 客户端。

        注意:

        默认情况下,默认不支持该系统主题。为了支持主题级别的策略,需要配置 topicLevelPoliciesEnabled = true ,同时,为了启用系统主题,你需要在 Pulsar 的配置文件中,如,conf/broker.conf 或者 conf/standalone.conf 中设置 systemtopicenabled = true 。