Pulsar的Topic、Subscription和Cursors工作原理
我们将要简要介绍
Topic(主题)、Subsription(订阅)和Cursors(游标)的基本概念
不会包含深层次的消息传递方式
Topic和Subscription
如下
消息存储在Topic中。
逻辑上一个Topic是日志结构,每个消息都在这个日志结构中有一个偏移量。
Apache Pulsar使用游标来跟踪偏移量。
生产者将消息发送到一个指定的Topic,Apache Pulsar保证消息一旦被确认就不会丢失(正确的配置和非整个集群故障的情况下)。
消费者通过订阅来消费Topic中的消息。订阅是游标(跟踪偏移量)的逻辑实体,并且还根据不同的订阅类型提供一些额外的保证
Exclusive(独享) - 一个订阅只能有一个消息者消费消息
Shared(共享) - 一个订阅中同时可以有多个消费者,多个消费者共享Topic中的消息
Fail-Over(灾备) - 一个订阅同时只有一个消费者,可以有多个备份消费者。一旦主消费者故障则备份消费者接管。不会出现同时有两个活跃的消费者。
一个Topic可以添加多个订阅。订阅不包含消息的数据,只包含元数据和游标。
Apache Pulsar通过允许消费者将Topic看做在消费者消费确认后删除消息的队列,或者消费者可以根据游标的回放来提供队列和日志的语义。在底层都使用日志作为存储模型。
如果没有对Topic设置数据保留策略(目前通过其命名空间,后面会提供Topic级别的设置),一旦一个Topic的所有订阅的游标都已经成功消费到一个偏移量时,此偏移量前面的消息就会被自动删除。也就是说需要该Topic的所有订阅上得到消费确认。
但是,如果Topic设置了数据保留策略,已经消费确认的消息超过保留策略阈值(Topic的消息存储大小、Topic中消息保留的时间)后会被删除。
消费者可以以单条或者累积的方式确认消息。累积确认会有更好的吞吐量,但是在消息消费失败后会引入重复的消息处理。注意,累积消费不适用于共享模式的订阅,因为累积确认是基于偏移量的。但是在客户端API中支持批量确认,这样会减少RPC调用次数来提高在共享模式下订阅竞争消费的吞吐量。
最后,有一些类似于kafka Topic的分区(Partition)。区别在于Apache Pulsar中的分区也是Topic。就像kafka一样,生产者可以轮询、hash或者明确指定分区来发送消息。
Pulsar的Topic、Subscription和Cursors工作原理相关推荐
- kafka同一个group 消费两个topic吗_MQ: 一张图读懂kafka工作原理
1.关于kafka Kafka是由Apache软件基金会开发的一个开源消息队列,由Scala和Java编写. 相关文章参考: MQ: 消息队列常见应用场景及主流消息队列ActiveMQ.RabbitM ...
- 图解 Git 工作原理
来源:深度学习爱好者本文约2600字,建议阅读5分钟本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索 ...
- 用21张图,把Git 工作原理彻底说清楚
作者丨Mark Lodato 来源丨http://n53wt.cn/3eXSJ 本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在 ...
- 图解 Git 工作原理,看完你就懂了!
本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. git add files ...
- [RabbitMQ]工作原理_原理名词解释
RabbitMQ 核心部分 各个名词介绍 RabbitMQ工作原理 Broker: 接收和分发消息的应用,RabbitMQ Server 就是 Message Broker Virtual host: ...
- 简单分析KafKa工作原理
架构图 Producer:Producer即生产者,消息的产生者,是消息的入口. kafka cluster: Broker:Broker是kafka实例,每个服务器上有一个或多个kafka的实例,我 ...
- javascript原型_JavaScript的原型:古怪,但这是它的工作原理
javascript原型 by Pranav Jindal 通过普拉纳夫·金达尔 JavaScript的原型:古怪,但这是它的工作原理 (Prototype in JavaScript: it's q ...
- 收藏 | 图解 Git 工作原理
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:深度学习这件小事 http://marklodato.github.io/visual-git-guide/i ...
- kafka分区与分组原理_Kafka工作原理
Kafka工作原理 Kafka工作原理 4.1. topic和消息 4.2. Producer 4.3. Consumer 4.4. Kafka核心特性 4.5. consumer.consumer ...
最新文章
- linux系统的sudo apt-get命令大全
- Push Notification (1)Google C2DM 服务
- python编程下载安卓版-python编程入门
- Docker namespace技术(九)
- sudo运行程序遇到的问题
- svn 命令行下常用的几个命令
- linux php oci,Linux下PHP连接Oracle数据库
- libxml2如何配合php使用,libxml2实现xml文档的节点的修改
- 准备好跟机器人正面交锋了吗?
- 第四季 word vba
- 敏感词过滤/字符编码
- Java项目框架搭建系列(Java学习路线)-博客提纲
- android studio使用方法,android studio使用教程
- 微信浏览器打开ios App Store 并且可以打开或下载pp
- 解决Windows 10 家庭中文版没有组策略编辑器的问题
- 三、路由协议——直连路由、静态路由、缺省路由、路由优先级和路由度量、路由冗余和备份(浮动静态路由)
- Hash(散列)冲突解决 线性探测再散列和二次探测再散列
- 为什么需要开发X 波段带通滤波器
- 最新最全移动端界面设计UI尺寸规范-2018年初版
- java里void的意思_void的用法和意义