【问题标题】:Idempotency Barrier for messaging消息传递的幂等性屏障
【发布时间】:2010-11-14 17:03:41
【问题描述】:

我最近看到的关于RabbitMQpresentation 提到了使用称为“幂等性屏障”的东西来进行消息重复数据删除。这只是消息混合器的一个花哨名称还是更具体的名称。如果是这样,它究竟是什么?谷歌搜索得到的结果大多与 RabbitMQ 相关,几乎没有解释它是什么。

【问题讨论】:

    标签: java message-queue messaging rabbitmq


    【解决方案1】:

    Idempotency 是函数的行为,其中对函数的输出执行 n 次会导致与执行一次的函数状态相同。这在消息传递环境中很有用,因为延迟消息不会导致意外行为。虽然合并意味着消息将被集中以防止重复,但幂等性意味着消息传递框架将允许重复消息的多次传输和执行,同时保持消息的多个副本的执行与一条消息的执行具有相同的结果。

    【讨论】:

    • 如果我理解正确,你的最后一句话似乎暗示幂等性实际上是消息消费者的功能,而不是框架。如果是这种情况,那么框架是幂等的意味着什么?如果框架允许执行重复,则由客户端来检测重复并忽略它们或保持不受影响。
    • 在消息传递环境中,可以通过以下两种方式之一创建幂等行为。您可以将其封装到您的消息中,考虑尾递归,或者您可以让客户端按照您的描述实现一些缓存机制。您正在考虑的缓存技术在概念上是一种简单的技术,但它不能很好地扩展,因为当您让消息使用者运行时,缓存将需要不断增长。如果服务的吞吐量很高,这可能会导致内存不足。
    • 如果您知道您的 SLA 在延迟消息方面是什么,您可以实现一个滑动窗口(类似于 TCP)。即,如果您创建的 SLA 只需要将最后 1000 条消息保存在缓存中,那么您就有了有限的内存。这种类型的安排应该足以满足大多数情况,因为它们会有一个现实的延迟上限——但如果你有需要的话,显然不允许“无限”延迟。最重要的是,弄清楚你的 SLA。
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 2010-10-29
    • 2020-06-23
    • 2010-12-12
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多