【问题标题】:Storm with SQS and Cassandra insert happenning more than once不止一次发生 SQS 和 Cassandra 插入的风暴
【发布时间】:2016-11-13 02:40:36
【问题描述】:

我最近一直在 AWS 中试用 Apache Storm。我创建了一个 SQS spout,它从 SQS 读取并传递给要插入到 db 的 Cassandra 螺栓。 当数据库插入成功时,将发回确认并从 SQS 中删除消息。但是当并行提示增加时,一条消息被插入不止一次。可能是因为在确认返回到 spout 之前,另一个线程已经从 SQS 读取了相同的消息。我该如何处理这种情况?如果没有并行性,速度会很慢。

【问题讨论】:

  • 我对 SQS 不熟悉,但是您需要“阻止”两次读取数据(您可以使用像 Apacha Kafka 中的偏移量吗?)。或者您可以设置一个全局“标志”。当消息被完全处理(连同消息本身)或消息在 Storm 中失败时(即,只需删除标志以允许再次读取消息),应该删除这个“阻塞”标志。如果 SQS 不为此提供任何支持,则您的 spout 需要一个(可扩展的)分布式同步机制(即分布式哈希表或类似的)

标签: amazon-web-services apache-storm amazon-sqs


【解决方案1】:

您可以只增加 Amazon SQS 中的可见性超时属性。因此,在一个线程接手工作后,直到超时,其他线程才能看到它。

查看以下视频了解更多信息。 https://www.youtube.com/watch?v=rxnuioFAxac

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 2016-06-29
    • 2023-03-27
    • 2013-11-24
    • 2022-07-20
    相关资源
    最近更新 更多