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

时间:2017-08-02 16:24:33

标签: message-queue distributed-system

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

感谢任何直接回答或对文档的引用。

  1. 用例:
    我知道队列是一个消息传递系统。它解耦了彼此之间相互通信的系统。但是,这是使用队列的唯一要点吗?

  2. 可扩展性:
    队列如何扩展大量数据?读写都是。

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

  4. 我的问题未指定给任何特定的队列服务器,如Kafka或JMS。总的来说。

1 个答案:

答案 0 :(得分:0)

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

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

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

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