共计 3332 个字符,预计需要花费 9 分钟才能阅读完成。
本文作者为 StreamNative 工程师李鹏辉、刘昱。
对于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。
GitHub 地址:http://github.com/apache/pulsar/
Apache Pulsar 的一大长处是 Pulsar 的多层分片架构和分层资源管理为隔离(isolation)提供了坚实基础,用户能够以所需形式隔离资源,防止资源竞争,保证系统稳定性。
本系列博客将深刻探讨 Pulsar isolation。本文为本系列文章的第一篇,次要介绍如何在 Pulsar 中通过以下形式实现隔离:
- 独自 Pulsar 集群
- 共享 BookKeeper 集群
- 繁多 Pulsar 集群
独自 Pulsar 集群
在这种环境中,你须要为隔离单元创立各自的 Pulsar 集群。
工作原理
图 1 展现了如何通过部署独自的 Pulsar 集群实现隔离。
工作原理要点:
- 每个 Pulsar 集群 通过 DNS entry point 接入服务,并确保客户端能够通过 DNS entry point 拜访集群。客户端能够应用一个或多个 Pulsar URL,该 URL 是 Pulsar 集群的连贯地址。
- 每个 Pulsar 集群有一个或多个 broker 和 bookie。
- 每个 Pulsar 集群有一个元数据存储区。
- 元数据存储区能够分为 Pulsar 元数据存储区 和 BookKeeper 元数据存储区。本文不辨别上述两种元数据存储区,元数据存储区 同时蕴含二者。
- 多个 Pulsar 集群共享一个配置存储。
- Pulsar 分层的资源管理为隔离提供了坚实基础。如需隔离命名空间,则须要为命名空间指定集群。集群必须属于租户容许的集群列表。属于该命名空间的 topic 也会调配至该集群。对于如何为命名空间设置集群,参阅 为命名空间设置集群。对于如何治理 Pulsar 集群,参阅治理 Pulsar 集群。
迁徙命名空间
如需在不同集群之间迁徙命名空间,你须要启用跨地区复制性能,并在数据全副复制到指标集群后敞开跨地区复制性能。对于如何为命名空间设置跨地区复制,参阅为命名空间设置跨地区复制。
扩缩容节点
扩缩容 broker 或 bookie 的操作需在相应集群中进行。
共享 BookKeeper 集群
在这种形式中,你须要部署一个由多个 broker 集群共享的 BookKeeper 集群。
工作原理
图 2 展现了如何通过部署共享 BookKeeper 集群实现隔离。
工作原理要点:
- 每个 Pulsar 集群 通过 DNS entry point 接入服务,并确保客户端能够通过 DNS entry point 拜访集群。客户端能够应用一个或多个 Pulsar 集群的连贯地址。
- 每个 Pulsar 集群有一个或多个 broker。
- 每个 Pulsar 集群有一个元数据存储区。
- 多个 Pulsar 集群共享一个 BookKeeper 集群。
- Pulsar 分层的资源管理为隔离提供了坚实基础。如需隔离命名空间,则须要为命名空间指定集群。集群必须属于租户容许的集群列表。属于该命名空间的 topic 也会调配至该集群。对于如何为命名空间设置集群,参阅 为命名空间设置集群。对于如何治理 Pulsar 集群,参阅治理 Pulsar 集群。
通过不同 bookie affinity group 实现存储隔离,如图 3。
- 所有 bookie 隔离组共享 BookKeeper 集群和元数据存储区。
- 每个 bookie 隔离组有一个或多个 bookie。
- 用户能够为命名空间指定一个或多个 primary group 或 secondary group。先在 primary group 的 bookie 上创立命名空间中的 topic,再在 secondary group 的 bookie 上创立命名空间中的 topic。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。
迁徙命名空间
将命名空间上的音讯服务迁徙到其余 broker 集群上,须要为命名空间更改集群。将命名空间迁徙到其余 bookie affinity group 中,须要更改 bookie affinity group。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。因为所有 broker 集群共享同一 BookKeeper 集群,因而无需复制数据到新的 BookKeeper 集群上。
扩缩容节点
Broker
扩缩容 broker 时,须要留神以下几点:
- 扩容 broker 时, 需应用 primary group 或 secondary group 为新增 broker 指定 broker 隔离组。
- 缩容 broker 时,需确保 broker 隔离组有足够数量的 broker。
Bookie
扩缩容 bookie 时,须要留神以下几点:
- 扩容 bookie 时,需为新增 bookie 指定 bookie affinity group。
- 缩容 bookie 时,需确保 bookie affinity group 有足够数量的 bookie。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。
繁多 Pulsar 集群
应用这种形式实现隔离,只需治理繁多 Pulsar 集群,无需部署多个 broker 集群和多个 bookie 集群。
工作原理
图 4 展现了如何通过部署繁多 Pulsar 集群实现隔离。
工作原理要点:
- 每个 Pulsar 集群 通过 DNS entry point 接入服务,并确保客户端能够通过 DNS entry point 拜访集群。客户端能够应用 Pulsar 集群的连贯地址。
- 通过不同 broker 隔离组实现 broker 隔离(Pulsar 将 topic 调配给特定 broker 隔离中的 broker)。对于如何设置 broker 隔离组,参阅设置 broker 隔离组。
- 通过不同 bookie affinity group 实现存储隔离。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。
迁徙命名空间
迁徙命名空间到其余 broker 隔离组,须要更改命名空间隔离策略。对于如何设置设置命名空间隔离策略,参阅设置命名空间隔离策略。
迁徙命名空间到其余 bookie affinity group(不将原始数据挪动至指标 bookie affinity group),须要更改 bookie affinity group。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。
扩缩容模式
Broker
扩缩容 broker 时,须要留神以下几点:
- 扩容 broker 时, 需应用 primary group 或 secondary group 为新增 broker 指定 broker 隔离组。
- 缩容 broker 时,需确保 broker 隔离组有足够数量的 broker。
Bookie
扩缩容 bookie 时,须要留神以下几点:
- 扩容 bookie 时,需为新增 bookie 指定 bookie affinity group。
- 缩容 bookie 时,需确保 bookie affinity group 有足够数量的 bookie。对于如何设置 bookie affinity group,参阅设置 bookie affinity group。
Reference
在生产环境中,用户能够依据需要同时应用本文提到的三种 Pulsar 隔离办法,也能够抉择其余办法。一般而言,抉择隔离办法时能够参考以下注意事项:某些要害业务(如计费、广告等)应用多个小型 Pulsar 集群,不与其余集群共享存储或本地 ZooKeeper。应用多个小型 Pulsar 集群能够为重要工作负载提供最高级别的隔离。大型企业(领有多个团队)能够部署一个大型 Pulsar 集群,对不同的隔离组应用不同的命名空间,依据容量或工作负载确定隔离组。例如,有大量扇出的场景与端到端提早最低场景中应用的硬件不尽相同。
相干浏览
- 博文举荐 | 一文带你看懂 Pulsar 的音讯保留和过期策略
- 博文举荐|腾讯专家深度解析 Apache Pulsar 五大利用场景
- 博文举荐|Pulsar 存储空间不开释的问题剖析与解决办法
点击 链接,获取 Apache Pulsar 硬核干货材料!