gpt4 book ai didi

queue - 分布式队列是如何架构的?

转载 作者:行者123 更新时间:2023-12-03 15:01:59 25 4
gpt4 key购买 nike

使分布式队列打勾的架构模式/解决方案是什么?

请分享订购和非订购类型。

最佳答案

您可以将队列的后端视为复制数据库。 (我假设您正在谈论的队列认为自己是持久的:当他们接受消息时,他们保证至少一次传递。)

作为复制数据库,消息队列后端使用复制协议(protocol)来确保消息在至少 N 台主机上,然后再向发送方确认接收。常见的复制协议(protocol)有 2PC、3PC 以及 Raft、Multi-Paxos 和 Chain Replication 等共识协议(protocol)。

要将消息发送给接收者,您必须使用消息租约进行几乎相同的复制。队列服务器将消息保留一段时间;它将消息发送给接收者,如果/当接收者确认收到消息时,服务器将删除该消息。否则,服务器会将消息重新发送到下一个可用的接收器。

一些消息队列停在那里,另一些则添加了很多花里胡哨。 SQS 是一种队列实现,它不会添加太多花里胡哨的东西,因此它可以扩展更多。例如,它允许他们对队列进行分片,以便一个 SQS 队列实际上由许多(甚至数千个)这些队列组成,如上所述。顺便说一句,我曾经听到一位 SQS 开发人员问另一位“当您每秒接受数百万条消息时,‘排序’是什么意思?”

话虽如此,一些队列确实提供了强大的排序保证。 (我已经实现了其中几种类型的系统。)这样做的代价是降低了扩展能力。为了保持排序,队列的复杂性会上升。队列必须维护所有消息的有序日志,并在其服务器之间复制相同的顺序。这比无序复制要困难得多。有序队列系统通常会选择一个主节点来维护排序,所有消息都被路由到主节点。他们还倾向于使用更复杂的协议(protocol)进行复制。

关于queue - 分布式队列是如何架构的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com