基础向|订阅类型来康康?

这周我们将从 Pulsar 最基本的概念角度分享其订阅模型,更多的是结合实际代码进行展示,所以此次博客不会涉及太多的文字整理,更细节的可以参考文末视频回放。

首先回顾一些最近一周 Pulsar 的相关进展:

  • Pulsar Summit 2020 线上峰会将在 6 月 17-18 日举行。想要参与的小伙伴可以去官网查看更多细节:https://pulsar-summit.org 。

  • Pulsar 2.5.2 版本已经发布!

  • Pulsar 2.6.0 版本也已在计划中,敬请期待!

接下来就一起看看关于 Pulsar 订阅模式的相关细节吧!


订 阅 类 型

关于 Pulsar 最基本的概念和架构描述,大家平时可以查看官网,进行更多的信息参考。这些内容会从开发者角度让你更容易的理解和使用 Pulsar。
https://pulsar.apache.org/docs/en/concepts-overview/

消息中间件最核心的点就是——消息。消息里可能出现额外添加的属性,比如 value、key等。这些属性是 Pulsar 提供给用户在创建消息时可以选择性添加的。

具体在代码内如何进行添加,可以参考回放视频 07:40-10:00 时间段。

在 producer 生产消息和 consumer 消费消息时,就产生了 consumer 的消息订阅。不同的订阅类型代表一个消费组,它可以消费到完整的一份消息。所以订阅类型就决定了不同的消费组如何进行消费消息的行为。

Pulsar 允许在同一个消息上,既有顺序消费,也有乱序消费。这里跟其他中间件不太一样的是,它是由订阅模式来决定消费方式。这也是为什么 Pulsar 具有消息队列和流模式融合的特性。

目前 Pular 的订阅模式主要是以下四种:

  • Exclusive:独占订阅

  • Failover:故障转移订阅

  • Shared:共享订阅

  • Key_Shared:Key 保序共享订阅

下面就通过简单地文字和实际代码操作进行每种类型的讲解。

不管有多少个 consumer 同时存在,只会有一个 consumer 是活跃的,也就是只有这一个 consumer 可以接收到这个 topic 的所有消息。这种模式就为 Pulsar 订阅模式中的独占订阅(Exclusive)

Failover(故障转移订阅)则是多个 consumer 可以附加到同一订阅。但是,对于给定的主题分区,将选择一个 consumer 作为该主题分区的主使用者,其他 consumer 将被指定为故障转移消费者,当主消费者断开连接时,分区将被重新分配给其中一个故障转移消费者,而新分配的消费者将成为新的主消费者。


发生这种情况时,所有未确认的消息都将传递给新的主消费者,这类似于 Apache Kafka 中的使用者分区重新平衡。

关于这两种订阅类型的代码操作详情和运行效果,可以参考回放视频 13:50-38:08 时间段。

Shared(共享订阅)是可以将所需数量的 consumer 附加到同一订阅。消息以多个 consumer 的循环尝试分发形式传递,并且任何给定的消息仅传递给一个 consumer。当消费者断开连接时,所有传递给它并且未被确认的消息将被重新安排,以便发送给该订阅上剩余的 consumer。

关于这 Shared 订阅类型的代码操作详情和运行效果,可以参考回放视频 39:30-48:00 时间段。

Key_Shared 订阅模式是 2.4.0 以后一个新订阅模式。类似于共享订阅,但又不是按照循环模式,是按照 key 进行分发,比如同一特征(奇数、偶数等)。总的来说是融合了 Failover 的有序性和 Shared 的消费扩展性、更均衡的一种订阅模式。

关于 Key_Shared 订阅类型的代码操作详情和运行效果,可以参考回放视频 49:10-58:31 时间段。

这四种方式里,究竟哪种方式是最适合自己产品的呢?

在很多情况下,如果不在乎消息顺序,那么 Shared 模式可能是最理想的模式。因为可以通过添加更多的消费者来提高消费能力。

如果你在使用架构里有与 Flink 进行集成结合的,那么 Failover 和 Key_Shared 模式可能更适合。因为可以通过记录消费状态,来保证集成不会出现重复的数据。

最后一点需要补充的是,在使用订阅模式时,还需要考虑的一个因素是——确认。即收到消息处理完成后,需要传递给 broker 并告知“已确认”的状态。在 Pulsar 里有两种确认方式,一种是单条确认,另一种是累积确认。

具体两种确认方式的实际操作,可以参考回放视频 60:00-70:00 时间段.


总 结

本次分享还是基于消息队列和流统一的消费模型,进行不同消息订阅方式的讲解。大家也可以参考 pulsar-example repo 下进行相关 demo 的查看。

https://github.com/streamnative/pulsar-examples/tree/master/pulsar

5 月 31 日上午十一点,将由来自腾讯计费平台的大佬刘德志为大家分享关于 Pulsar 如何应用在腾讯系软件的细节,敬请期待!

????????点击「阅读原文」,查看往期所有直播回放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值