Apache Pulsar 的一大优点是 Pulsar 的多层分片架构和分层资源管理为隔离(isolation)提供了坚实基础,用户可以以所需方式隔离资源,避免资源竞争,保证系统稳定性。
本系列博客将深入讨论 Pulsar isolation。本文为本系列文章的第一篇,主要介绍如何在 Pulsar 中通过以下方式实现隔离:
在这种环境中,你需要为隔离单元创建各自的 Pulsar 集群。
图 1 展示了如何通过部署单独的 Pulsar 集群实现隔离。
工作原理要点:
如需在不同集群之间迁移命名空间,你需要启用跨地域复制功能,并在数据全部复制到目标集群后关闭跨地域复制功能。关于如何为命名空间设置跨地域复制,参阅为命名空间设置跨地域复制。
扩缩容 broker 或 bookie 的操作需在相应集群中进行。
在这种方式中,你需要部署一个由多个 broker 集群共享的 BookKeeper 集群。
图 2 展示了如何通过部署共享 BookKeeper 集群实现隔离。
工作原理要点:
通过不同 bookie affinity group 实现存储隔离,如图 3。
将命名空间上的消息服务迁移到其他 broker 集群上,需要为命名空间更改集群。将命名空间迁移到其他 bookie affinity group 中,需要更改 bookie affinity group。关于如何设置 bookie affinity group,参阅设置 bookie affinity group。由于所有 broker 集群共享同一 BookKeeper 集群,因此无需复制数据到新的 BookKeeper 集群上。
扩缩容 broker 时,需要注意以下几点:
primary
group 或 secondary
group 为新增 broker 指定 broker 隔离组。扩缩容 bookie 时,需要注意以下几点:
使用这种方式实现隔离,只需管理单一 Pulsar 集群,无需部署多个 broker 集群和多个 bookie 集群。
图 4 展示了如何通过部署单一 Pulsar 集群实现隔离。
工作原理要点:
迁移命名空间到其他 broker 隔离组,需要更改命名空间隔离策略。关于如何设置设置命名空间隔离策略,参阅设置命名空间隔离策略。
迁移命名空间到其他 bookie affinity group(不将原始数据移动至目标 bookie affinity group),需要更改 bookie affinity group。关于如何设置 bookie affinity group,参阅设置 bookie affinity group。
扩缩容 broker 时,需要注意以下几点:
primary
group 或 secondary
group 为新增 broker 指定 broker 隔离组。扩缩容 bookie 时,需要注意以下几点:
在生产环境中,用户可以根据需求同时使用本文提到的三种 Pulsar 隔离方法,也可以选择其他方法。一般而言,选择隔离方法时可以参考以下注意事项:某些关键业务(如计费、广告等)使用多个小型 Pulsar 集群,不与其他集群共享存储或本地 ZooKeeper。使用多个小型 Pulsar 集群可以为重要工作负载提供最高级别的隔离。大型企业(拥有多个团队)可以部署一个大型 Pulsar 集群,对不同的隔离组使用不同的命名空间,根据容量或工作负载确定隔离组。例如,有大量扇出的场景与端到端延迟最低场景中使用的硬件不尽相同。