【问题标题】:How to Partition a Queue in a distributed system如何在分布式系统中对队列进行分区
【发布时间】:2022-07-19 00:58:42
【问题描述】:

这个问题是我前段时间遇到的,很遗憾,我在网上找不到我正在寻找的答案。这是问题陈述:

考虑一个简单的生产者-消费者环境,我们只有一个 生产者写入队列,一个消费者读取队列。现在 因为写入队列的对象非常大,而且我们的 我们目前的机器上可用的资源并不多,我们决定 实现一个分布式队列系统,其中队列内的数据 在多个节点之间进行分区。对我们来说很重要的是 total ordering 是保守的,而 pushingpoping 是数据, 这意味着从用户的角度来看,这个分布式队列的作用只是 就像一个统一的队列。

在为这个问题提供解决方案之前,我们必须询问高可用性对我们来说更重要还是部分容忍度更重要。我相信在这两个版本中,都有有趣的挑战需要解决,我认为肯定必须在之前提出这样的问题,但是,在搜索现有解决方案之后,我无法从算法或科学中找到完整且经过深思熟虑的答案观点看法。我发现的大部分是工程和高级方法,利用 KafkaRabitMQRedis 等工具。

所以问题仍然存在,如果你能与我分享你对这个问题的设计、算法和想法,或者指出一些已经解决了这个问题的科学期刊或文章等,我将不胜感激。

【问题讨论】:

  • 这是单机吗?可以使用对大对象的引用(或指针)创建和初始化“空闲”队列。队列“节点”将由生产者从“空闲”池中检索,对象填充数据,然后排入消费者输入队列。消费者将处理队列“节点”,并将它们返回到“空闲”池。
  • 在这种情况下,您希望将一条消息分布在分区之间,或者发布消息的数量可以跨分区分布,即维护一条消息。

标签: queue partitioning distributed-system


【解决方案1】:

这可能是实现上述目标的方法之一。

为了实现高可用性,您可以拥有分区副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2017-11-20
    • 2011-04-08
    • 1970-01-01
    • 2013-04-02
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多