分布式队列是如何构建的?

queue distributed distributed-computing distributed-system

2895 观看

2回复

9140 作者的声誉

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

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

作者: Bohdan 的来源 发布者: 2015 年 3 月 10 日

回应 (2)


9

7135 作者的声誉

决定

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

作为复制数据库,消息队列后端使用复制协议确保消息至少在N个主机上,然后才确认收件人已发送给发件人。常见的复制协议是2PC,3PC和共识协议,如Raft,Multi-Paxos和Chain Replication。

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

一些消息队列停在那里,其他人添加了许多铃声和口哨声。SQS是一个队列实现,它不会添加许多花里胡哨,以便它可以扩展更多。例如,它允许它们对队列进行分片,以便一个SQS队列实际上由如上所述的许多甚至数千个队列组成。顺便说一句,我曾经听过一位SQS开发人员在接受每秒数百万封邮件时会问另一个“订购' 什么意思?”

话虽这么说,一些队列确实提供强大的订购保证。(我已经实现了几种类型的系统。)这样做的成本是缩放的能力。为了保持排序,队列的复杂性也在增加。队列必须维护所有消息的有序日志,并在其服务器上复制相同的顺序。这比无序复制要困难得多。有序队列系统通常选择主设备来维护排序,所有消息都路由到主设备。他们还倾向于使用更复杂的协议进行复制。

作者: Michael Deardeuff 发布者: 11.03.2015 02:23

0

1 作者的声誉

关于这个主题的很多有用的东西https://youtu.be/iJLL-KPqBpM(系统设计访谈 - 分布式消息队列)

作者: mIchanic 发布者: 16.03.2019 06:32
32x32