写点什么

[Pulsar] Pulsar Resources 介绍

作者:Zike Yang
  • 2021 年 12 月 16 日
  • 本文字数:1001 字

    阅读完需:约 3 分钟

在 Pulsar 中,我们除了需要在 Bookie 中管理用户的数据,还要在 ZK 中管理其他的各类数据:如各类 Policy、鉴权相关的数据等等。在 Pulsar 中,使用 PulsarResources 对这些资源进行管理,本文将对 PulsarResources 进行简要介绍。


在初始化 Pulsar Resoures 时,会传入 MetadataStore,包括用于管理本地集群数据的 localMetadatStore 以及用于管理各类集群或跨地域管理的 configurationMetadataStore。Pulsar Resources 中的数据都是存储在 metadataStore 中的。而 MetadataStore 是一个接口,一个典型的实现就是 Zookeeper 实现,Pulsar 目前也主要使用 ZK 来实现元数据的管理。


在 PulsarResourcces 中维护了各类的资源,如下:

public class PulsarResources {    @Getter    private final TenantResources tenantResources;    @Getter    private final ClusterResources clusterResources;    @Getter    private final ResourceGroupResources resourcegroupResources;    @Getter    private final NamespaceResources namespaceResources;    @Getter    private final DynamicConfigurationResources dynamicConfigResources;    @Getter    private final LocalPoliciesResources localPolicies;    @Getter    private final LoadManagerReportResources loadReportResources;    @Getter    private final BookieResources bookieResources;    @Getter    private final TopicResources topicResources;}
复制代码

这里对一些主要的资源进行介绍。

TenantResources 主要管理各类 tenant 的资源,存储在 MetadataStore(默认的实现是 ZK 实现)中的/admin/policies 路径下,主要是用来管理 tenants 的增删改查,以及获取 tenant 下的 namespaces。

ClusterResources 主要管理 clusters 的增删改查,数据存储在/admin/clusters 路径下。

NamespaceResources 用于管理 namesapce 下的各类资源,包括 namespace 层级下的 policy,常用于鉴权,除此之外,还用来管理 namespace 下的 bundle 信息(在/loadbalance/bundle-data 路径下)。

TopicResources 用于管理各类 topic 的元数据,如对 persistentTopic 进行增删改查,获取某个 partitioned topic 的 partition 数量,这些数据均存储在/managed-ledgers 路径下。我们在进行 Topic 的 Lookup 时就依赖这些数据。


Pulsar 在各类操作中,如创建 topic、查询 topic、设置 policy、鉴权等等,都需要通过 PulsarResources 进行管理,也是 Pulsar Broker 中的一个重要组成部分。

发布于: 刚刚阅读数: 2
用户头像

Zike Yang

关注

还未添加个人签名 2020.10.20 加入

Apache Pulsar Contributor

评论

发布
暂无评论
[Pulsar] Pulsar Resources介绍