如何理解队列在分布式系统中的作用?

use*_*415 5 message-queue distributed-system

我试图了解分布式系统中队列的用例是什么。
以及它如何扩展以及如何确保它不是系统中的单点故障?

任何直接回答或对文档的引用都值得赞赏。

  1. 用例:
    我知道队列是一个消息系统。并且它解耦了彼此通信的系统。但是,这是使用队列的唯一目的吗?

  2. 可扩展性:
    队列如何针对大量数据进行扩展?既读又写。

  3. 可靠性:队列如何不成为系统中的单点故障?队列是否进行复制(类似于数据存储)?

我的问题没有指定到任何特定的队列服务器,如 Kafka 或 JMS。就一般而言。

use*_*197 0

队列是一个心理概念,实现决定大概是1+2+3

A1:不,这不是唯一的角色——消息传递似乎是主要角色,但分布式系统信令是另一个角色,但重要性丝毫不减。Hoare 的开创性 CSP 论文是该领域的旗舰论文。近几十年来,在设计分布式系统信令/消息服务基础设施时,提供了更多选择和“智能行为”。

A2:扩展范围在很大程度上取决于实施。很明显,无代理队列可以比集中式、基于代理的基础设施更快地工作。随着数据流量的增长,传输类别和传输链路会导致额外的延迟和性能下降。BLOB 处理是另一个级别的性能悬崖,因为效率低下会沿着分布式处理链不断累积。零拷贝(几乎)零延迟的智能队列实现仍然是操作系统和类似资源限制的受害者。

A3:哦,当然,如果单独留下的话,那就是 SPOF。然而,理论控制论使我们安全,因为我们可以创建可靠的系统,同时仍然使用容易出错的组件。因此,(M + N)抗故障方案是可以实现的,但是预算+创造力+设计纪律是任何此类项目必须生存的上限。