写点什么

分享两种 Pulsar 消息积压 topic 级别策略老化办法

  • 2023-12-26
    广东
  • 本文字数:745 字

    阅读完需:约 2 分钟

分享两种Pulsar消息积压topic级别策略老化办法

本文分享自华为云社区《Pulsar消息积压topic级别策略老化的两种方案》,作者: 张俭。


Pulsar 像大多数消息中间件一样,支持按时间和大小对消息积压进行老化。但是默认的策略只能在 namespace 级别配置。本文将介绍如何在 topic 级别实现老化策略的两种方案。

方案一:开启 TopicLevelPolicy 来实现


默认的策略配置通过在 Zookeeper 上配置对应的策略,可以通过./pulsar zookeeper-shell 命令来登录 zookeeper 集群查询。但是如果将这一实现方式扩展到 topic 级别,将会产生大量的(百万、千万级别)的 ZooKeeper 节点,这对于 ZooKeeper 集群来说几乎是不可接受的。因此,Pulsar 提供了一种新的实现方式,即通过 Topic 来存储策略配置,而不是通过 ZooKeeper 来存储。


Pulsar,从 2.7.0 版本开始,引入了 SystemTopic,用于存储 Topic 的元数据信息,包括 Topic 的策略配置。主题级策略使用户可以更灵活地管理主题,并不会给 ZooKeeper 带来额外负担。


您可以通过如下配置来开启 TopicLevelPolicy:


systemTopicEnabled=true
topicLevelPoliciesEnabled=true
复制代码


然后通过 set-backlog-quota 命令来设置您想要的老化时间和老化大小


PS: 完整的一些功能,如命令行 set-backlog-quota,在 3.0.0 版本中支持

方案二:通过自定义代码来实现


Pulsar 的 TopicLevelPolicy 实现需要通过 topic 存储策略配置,而不是通过 ZooKeeper 来存储。在实际的极端场景下,Topic 中存储的内容可能会丢失(因为未开启 Bookkeeper 立即落盘或磁盘文件损坏等原因),这将导致策略配置丢失,从而导致策略失效。因此,我们可以通过自定义代码来实现 topic 级别的策略配置,这样可以避免策略配置丢失的问题。


举个例子,业务可以将策略存放在 Mysql 中,然后通过 Pulsar 的 Admin API 来让策略生效

自定义代码实现 Backlog 时间策略


自定义代码实现 Backlog 大小策略



点击关注,第一时间了解华为云新鲜技术~

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

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
分享两种Pulsar消息积压topic级别策略老化办法_开发_华为云开发者联盟_InfoQ写作社区