我们将要简要介绍
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工作原理相关推荐

  1. kafka同一个group 消费两个topic吗_MQ: 一张图读懂kafka工作原理

    1.关于kafka Kafka是由Apache软件基金会开发的一个开源消息队列,由Scala和Java编写. 相关文章参考: MQ: 消息队列常见应用场景及主流消息队列ActiveMQ.RabbitM ...

  2. 图解 Git 工作原理

    来源:深度学习爱好者本文约2600字,建议阅读5分钟本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索 ...

  3. 用21张图,把Git 工作原理彻底说清楚

    作者丨Mark Lodato 来源丨http://n53wt.cn/3eXSJ 本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在 ...

  4. 图解 Git 工作原理,看完你就懂了!

    本文图解Git中的最常用命令.如果你稍微理解Git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. git add files ...

  5. [RabbitMQ]工作原理_原理名词解释

    RabbitMQ 核心部分 各个名词介绍 RabbitMQ工作原理 Broker: 接收和分发消息的应用,RabbitMQ Server 就是 Message Broker Virtual host: ...

  6. 简单分析KafKa工作原理

    架构图 Producer:Producer即生产者,消息的产生者,是消息的入口. kafka cluster: Broker:Broker是kafka实例,每个服务器上有一个或多个kafka的实例,我 ...

  7. javascript原型_JavaScript的原型:古怪,但这是它的工作原理

    javascript原型 by Pranav Jindal 通过普拉纳夫·金达尔 JavaScript的原型:古怪,但这是它的工作原理 (Prototype in JavaScript: it's q ...

  8. 收藏 | 图解 Git 工作原理

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:深度学习这件小事 http://marklodato.github.io/visual-git-guide/i ...

  9. kafka分区与分组原理_Kafka工作原理

    Kafka工作原理 Kafka工作原理 4.1. topic和消息 4.2. Producer 4.3. Consumer 4.4. Kafka核心特性 4.5. consumer.consumer ...

最新文章

  1. linux系统的sudo apt-get命令大全
  2. Push Notification (1)Google C2DM 服务
  3. python编程下载安卓版-python编程入门
  4. Docker namespace技术(九)
  5. sudo运行程序遇到的问题
  6. svn 命令行下常用的几个命令
  7. linux php oci,Linux下PHP连接Oracle数据库
  8. libxml2如何配合php使用,libxml2实现xml文档的节点的修改
  9. 准备好跟机器人正面交锋了吗?
  10. 第四季 word vba
  11. 敏感词过滤/字符编码
  12. Java项目框架搭建系列(Java学习路线)-博客提纲
  13. android studio使用方法,android studio使用教程
  14. 微信浏览器打开ios App Store 并且可以打开或下载pp
  15. 解决Windows 10 家庭中文版没有组策略编辑器的问题
  16. 三、路由协议——直连路由、静态路由、缺省路由、路由优先级和路由度量、路由冗余和备份(浮动静态路由)
  17. Hash(散列)冲突解决 线性探测再散列和二次探测再散列
  18. 为什么需要开发X 波段带通滤波器
  19. 最新最全移动端界面设计UI尺寸规范-2018年初版
  20. java里void的意思_void的用法和意义

热门文章

  1. 显卡利用率低可能的原因汇总
  2. QImage缩放后如何提升图片质量
  3. 毕设——电商产品评论数据的用户情感倾向分析
  4. 卸载微软拼音输入法2007
  5. [附源码]Python计算机毕业设计Django房屋租赁系统
  6. 那些有意思的网站彩蛋
  7. 网口压线顺序_网线线序排列以及八字口诀
  8. ziperello破解zip加密
  9. 房地产---那些事2
  10. 2022年熔化焊接与热切割考试题库及模拟考试