当前位置:首页 >> 中医新闻 >> 云原生死讯队列Pulsar浅析

云原生死讯队列Pulsar浅析

发布时间:2024-11-02

oker事故回复

右图概述Broker事故回复。本例中时会Broker2因某种原因(例如泥石流)而锁住。Pulsar扫描到Broker2已关闭,并赶紧将 Topic1-Part2的使用权从Broker2分散到Broker3。在Pulsar中时会统计数据存储设备和统计数据服务于分开,所以当全权3接手 Topic1-Part2的使用权时,它不所需粘贴Partiton的统计数据。如果有新统计数据到来,它赶紧比如说并存储设备为Topic1-Part2中时会的 Segment x + 1。Segment x + 1被分发并存储设备在Bookie1, 2和4 上。因为它不所需再度粘贴统计数据,所以使用权分散赶紧引发而没有不惜牺牲合而为一轴中区的一般来说性。

无缝Bookeeper事故回复

右图概述Bookeeper的事故回复。这里有一个磁盘事故导致存储设备在 bookie2 上的Segment 4 被破坏。Apache BookKeeper 本该时会扫描到这个出错并顺利进行粘贴修整。

BookKeeper中时会的日志修整是 Segment档次的多对多快速修整,这比再度粘贴整个合而为一轴中区要精细,只要粘贴才会的统计数据。这假定Apache BookKeeper 可以从bookie3和bookie4写入Segment4中时会的假消息,并在bookie1所在位置修整Segment4。所有的日志修整都在本该顺利进行,对 Broker和应用透明。

即使有Bookie键值造出错的情况引发时,通过去掉新的一般来说的Bookie来换成失败的Bookie,所有Broker 都可以继续接倍受寄给入,而没有不惜牺牲合而为一轴中区的一般来说性。

无缝坦克部队构建

右图概述Pulsar坦克部队构建。当Broker2将假消息寄给入Topic1-Part2的Segment X时,将Bookie X和 Bookie Y去掉到坦克部队中时会。Broker2赶紧发现新加入的Bookies X和Y。然后Broker将尝试将Segment X + 1和X + 2 的假消息存储设备到新去掉的Bookie中时会。新增加的Bookie立刻被一般来说紧紧,每秒钟赶紧增加,而没有再度粘贴任何统计数据。除了滑轨知觉和区域知觉方针之外,BookKeeper还提供者资源知觉的放置方针,以确保每秒钟在群集中时会的所有存储设备键值错综复杂保持最大限度。

三、假消息数学模型

3.1 共通的假消息数学模型

假消息数学模型一般表列造出 3 个方面:

假消息大众:如何发送和大众假消息 假消息断定(ACK):如何断定假消息 假消息留有(Retention):假消息存留小时,触发假消息移除的原因以及怎样移除

3.2 共通的大众数学模型

表头数学模型

表头数学模型合而为一要是采用无序或者一般来说的形式来大众假消息。通过表头数学模型,多个大众者可以从单个管线中时会转交假消息;当一条假消息从表头发送造出来后,多个大众者中时会的只有一个(任何一个都有也许)转交和大众这条假消息。假消息系统时会的具体情况实现同意了最后哪个大众者也就是说转交到假消息。

表头数学模型多半与无静止状态软件包一起为根基一般来说。无静止状态软件包不关怀查找,但它们或许所需需要断定(ack)或移除单条假消息,以及尽也许地构建大众并行性的能力。典型的基于表头数学模型的假消息系统时会包括 RabbitMQ 和 RocketMQ。

东流数学模型

东流数学模型促请假消息的大众严格查找或独占假消息大众。对于一个管线,一般来说文件传输数学模型,始终只时会有一个大众者一般来说和大众假消息。大众者按照假消息寄给入管线的确切次序转交从管线发送的假消息。

东流数学模型多半与有静止状态软件包一般来说。有静止状态的软件包不够加关注假消息的次序及其静止状态。假消息的大众次序同意了有静止状态软件包的静止状态。假消息的次序将因素软件包妥善所在位置理逻辑的正确性。

3.3 Pulsar假消息大众

Pulsar具象造出了为统一的大众数学模型: producer-topic-subscription-consumerPulsar的假消息数学模型既支持者表头数学模型,也支持者东流数学模型

Topic是一般来说发送假消息的连接线。Topic中时会的每条假消息,可以根据大众者的在线所需,多次被一般来说,每个在线对应一个大众者小组(Consumer Group)。每个Topic可以有并不相同的大众小组。

大众者(consumer)被小组合在一起以大众假消息,每个大众小组是一个在线(subscription)大众者可以保有并不相同的大众形式:独占(Exclusive),事故切换(Failover)或一般来说(Share)

Pulsar通过这种数学模型,将表头数学模型和东流数学模型这两种数学模型为根基在了一起,提供者了为统一的API接口。这种数学模型,既没有因素假消息系统时会的性能,也没有带来额外的开销,同时还为客户端提供者了不够多轻巧性,方便客户端根据自己的也就是说一幕来一般来说假消息系统时会。

独占在线(东流数学模型)

独占模式,topic仅仅被一个大众者在线。如果多于一个大众者以同样形式去在线合而为一轴,大众者将时会接获出错。右图中时会,只有Consumer A-0可以大众

容灾在线(东流数学模型)

容灾模式,多个大众者可以在线同一个topic,大众者按假消息者称谓的字典序排列。第一个大众者被初始简化为唯一转交假消息的大众者。这个大众者被称为合而为一大众者(master consumer)。当合而为一大众者锁住时,所有的假消息(从未被断定和后续进到的)将时会被分补发下一个大众者。在右图中时会,Consumer-B-0是合而为一大众者,如果Consumer-B-0锁住连接紧紧,Consumer-B-1时会变已成合而为一大众者去转交假消息

一般来说在线(表头数学模型)

在一般来说(shared)或轮询(round robin)模式下,多个一般来说者可以在线同一个topic。假消息通过轮询形式分补发并不相同的大众者,并且每个假消息仅时会被分补发一个大众者。当大众者锁住连接紧紧,所有被发送给它,但从未被断定的假消息将被再度安排,分补发其它活过的大众者。在右图中时会,Consumer-C-1和Consumer-C-2可以在线该合而为一轴,但是Consumer-C-3和其他大众者也可以在线该合而为一轴。

3.4 Pulsar假消息断定

当一般来说栖息于式假消息系统时会时,也许时会引发事故。比如在大众者从假消息系统时会中时会的合而为一轴大众假消息的过程中时会,大众者和Broker都也许引发出错。假消息断定(ACK)的旨在就是保证当引发这样的事故后,大众者需要从上一次停顿的之外回复大众,保证既没有丢失假消息,也没有重复妥善所在位置理此前ACK的假消息。

在 Pulsar 中时会,每个在线中时会都一般来说一个专供的统计嵌套——选单(Cursor)来在线中时会的每条假消息的ACK静止状态。每当大众者断定假消息时,选单都时会不够新。不够新选单可确保大众者没有再度接获假消息。

Pulsar 提供者两种假消息断定方法,单条断定(Individual Ack)和累加断定(Cumulative Ack)。通过累加断定,大众者只所需断定它接获的最后一条假消息。合而为一轴中区中时会的所有假消息(包括)提供者假消息 ID 将被上标为已断定,并且没有再度传达给大众者。

Pulsar 可以支持者假消息的单条断定,也就是选择性断定。大众者可以之外断定一条假消息。被断定后的假消息将没有被再度传达。右图概述单条断定和累加断定的差异(粉红色框中时会的假消息被断定并且没有被再度传达)。在图的上半均,它看出了累计断定的一个举例来说,M12 此前的假消息被上标为 acked。在图的下半均,它看出了之外顺利进行 acking 的下例。仅断定假消息 M7 和 M12 - 在大众者失败的情况下,除了 M7 和 M12 之外,其他所有假消息将被再度截取。

独占在线或容灾在线的大众者需要对假消息顺利进行单条断定和累加断定;一般来说在线的大众者只而无须对假消息顺利进行单条断定。单条断定假消息的能力为妥善所在位置理大众者事故提供者了不够好的体验。对于某些应用来说,妥善所在位置理一条假消息也许所需很长小时或者更为比起,避免再度截取此前断定的假消息更为重要。

选单(Cursor)由 Broker 来管理,利用 BookKeeper 的 Ledger 提供者存储设备。

Apache Pulsar 提供者了轻巧的假消息大众在线类型和假消息断定方法,通过简单的为统一的 API,就可以支持者各种假消息和东流的一般来说一幕。

3.5 Pulsar假消息存留

在假消息被断定后,Pulsar 的 Broker 时会不够新对应的选单。当 Topic 之中中时会的一条假消息,被所有的在线都断定 ack 后,才能移除这条假消息。Pulsar 还而无须通过设置存留小时,将假消息存留不够长小时,即使所有在线此前断定大众了它们。

右图概述如何在有 2 个在线的合而为一轴中时会存留假消息。在线 A 在 M6 和在线 B 此前消耗了 M10 此前的所有假消息此前此前消耗了所有假消息。这假定 M6 此前的所有假消息(粉红色框中时会)都可以必要移除。在线 A 仍从未一般来说 M6 和 M9 错综复杂的假消息,不会移除它们。如果合而为一轴系统设计了假消息存留期,则假消息 M0 到 M5 将在系统设计的不间断内保持不变,即使 A 和 B 此前断定大众了它们。

在假消息存留方针中时会,Pulsar 还支持者假消息适应环境小时(TTL)。如果假消息从未在系统设计的 TTL 不间断内被任何大众者一般来说,则假消息将自动上标为已断定。假消息存留期假消息 TTL 错综复杂的差异在于:假消息存留期作一般来说上标为已断定并设置为已移除的假消息,而 TTL 作一般来说从未 ack 的假消息。下面的图例中时会概述 Pulsar 中时会的 TTL。例如,如果在线 B 从未文艺活动大众者,则在系统设计的 TTL 不间断过后,假消息 M10 将自动上标为已断定,即使从未大众者也就是说写入该假消息。

四、为什么Pulsar不够适当IoT一幕

4.1 海量Topic

Pulsar近似值存储设备分开的的系统时会,使得Pulsar可以支持者百万档次Topic数量的构建,同时还能直至保持良好的性能。

Topic的伸缩性一般来说它的内部小组织和存储设备形式。Pulsar的统计数据留有在BookKeeper 服务于器上,始终保持寄给静止状态的并不相同 Topic的假消息,在内存中时会查找,最后聚合留有到大文件中时会,在Bookie中时会所需不够不及的文件句柄。另一方面Bookie的 IO 不够不及依赖于文件系统时会的Pagecache,Pulsar 也因此需要支持者大量的合而为一轴。

这是一个极大的提升,整体而言,Kafka近似值存储设备从未分开,Topic多了之后时会因素其次序IO,性能时会造出现比较严重的上升。

IoT一幕的Topic数量是数以亿计的,Pulsar能支持者海量Topic的能力恰好充分利用了IoT一幕的所需

4.2 租客受控

Pulsar 通过租客和定名空间这两个关键表达形式支持者多租客,Pulsar 的多租客性质合而为一要体过去 topic 的 URL 中时会

{persistent|non-persistent}://tenant/namespace/topic

多租客是IoT一幕的一个基本所需,Pulsar通过在topic中时会比如说定名空间达到了租客受控的特性。

4.3 假消息TTL

Pulsar可以给从未被断定的假消息设置活过间隔小时(TTL),虽然TTL的设置是针对整个namespace起效的,不会针对单个 Topic,但可以充分利用IoT一幕下并不相同客户端个性简化指定TTL的促请

五、参考文献

原文链接:

本文为阿里云原创主旨,从未经而无须不得转载。

宝宝消化不良的症状
眼屎多
宝宝消化不良怎么办吃什么调理
总是便秘怎么改善
治疗子宫内膜损伤的价格
心慌胸闷是怎么回事
再林阿莫西林颗粒治儿童鼻炎吗
红草止鼾怎么买
消痔软膏和马应龙哪个止疼好
十二指肠溃疡引起腹泻吃什么药好
标签:死讯队列
友情链接: