栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Pulsar中游标的工作原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pulsar中游标的工作原理

客户端或服务器端的计算机故障,具有强大 容错能力 的消息系统可确保不会丢失或重新恢复任何消息。为了提供这种能力,消息系统需要一个精确的跟踪机制来用于消息消费和确认。Apache Pulsar为此目的使用游标。

游标工作原理

  1. 代理向使用者发送消息。
  2. 收到此消息后,使用者将确认该消息,并将确认发送回代理。
  3. 代理接收确认并移动游标,更新存储在 BookKeeper 中的游标分类账。

由于代理是无状态的,而游标是有状态的,因此 Pulsar 将消费位置信息存储在 BookKeeper 中。当代理收到来自使用者的确认时,它会更新使用者绑定到的订阅的游标分类账。在使用者失败的情况下,消息消耗和确认信息仍然是安全的,并且在重新开始使用时不会重新计算任何消息。这是因为游标分类帐数据根据配置的副本策略(即 Ensemble Size、Write Quorum 和 Ack Quorum 的值)安全地存储在 bookies 上。

注意:一小部分游标元数据存储在 ZooKeeper 中,而不是存储在 BookKeeper 中,例如 cursorLedger 索引信息


数据分区

写入主题的数据可能只有几个 MB,也有可能是几个 TB。所以,在某些情况下主题的吞吐量很低,有时候又很高,完全取决于消费者的数量。那么碰到有些主题吞吐量很高而有些又很低的情况该怎么处理?为了解决这个问题,Pulsar 将一个主题的数据分布到多台机器上,也就是所谓的分区。
在处理海量数据时,为了保证高吞吐量,分区是一种很常见的手段。默认情况下,Pulsar 的主题是不进行分区的,但通过命令行工具或 API 可以很容易地创建分区主题,并指定分区的数量。
在创建好分区主题之后,Pulsar 可以自动对数据进行分区,不会影响到生产者和消费者。也就是说,一个应用程序向一个主题写入数据,对主题分区之后,不需要修改应用程序的代码。分区只是一个运维操作,应用程序不需要关心分区是如何进行的。
主题的分区操作由一个叫作 broker 的进程来处理,Pulsar 集群里的每个节点都会运行自己的 broker。

游标位置

要知道游标在主题中的确切位置,我们可以检查 markDeletePosition 游标的属性,该属性标记已确认消息的位置,该位置位于最旧的未确认消息之前。由于该消息及其之前的所有消息都已确认,因此可以将其删除。

: 您可以使用命令 pulsar-admin topics stats 检查主题的详细信息,该命令的输出包含与游标相关的信息,例如 markDeletePosition、 cursorLedger、 和 individuallyDeletedMessages。

总而言之,代理是否移动游标与属性 markDeletePosition 相关 请注意,由于由游标标记的消费位置仅适用于与游标关联的订阅,因此多个订阅游标可能位于一个主题的不同位置。

TTL 如何影响游标

默认情况下,Pulsar 会永久存储所有未确认的消息。您可能想知道,如果消息由于某种原因长时间未确认,游标是否保持静态。实际上,我们应该避免存在大量未确认消息的情况,因为这可能意味着对磁盘空间的巨大压力。在这种情况下,光标是否移动取决于脉冲星中的生存时间 (TTL)。

通过设置 TTL 策略,我们可以定义未确认消息的保留期。在配置的时间范围之后,Pulsar 会自动确认这些消息,强制移动光标。这也意味着这些消息已准备好被删除。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号