可伸缩定期队列消息批处理的设计

时间:2013-10-20 13:45:51

标签: java amazon-web-services batch-processing

我们目前有一个分布式设置,我们将事件发布到SQS,我们有一个应用程序,它有多个主机从队列中排出消息并对其进行一些转换并传输给感兴趣的各方。我有一个用例,其中接收端点具有消息量的可扩展性问题,因此我们希望在发送之前定期批量处理这些消息(比如每15分钟)。 传入消息速率约为每秒200条消息,每条消息不超过10 KB。这个系统不一定是实时的,但肯定是好的,而且订单也不重要(如果首先发送包含旧消息的批次,则可以。)

  1. 我能想到的一种方法是在应用程序(每个主机)中维护一个嵌入式数据库,该数据库批量处理事件,另一个线程定期运行并清除数据。

  2. 另一种方法可能是在分布式键值存储(s3,dynamo等)中创建带时间戳的存储桶,我们根据消息时间戳将消息写入正确的存储桶,并定期清除存储桶。

  3. 我们可以在这里遇到几个问题,因为消息可能已经被清除(可以通过使用默认存储桶来解决),需要准确地决定何时清除存储桶等消息。

    我看到它的方式,至少需要两个组件,一个用于批量处理临时存储,另一个用于清除它。

    对上述方法的任何反馈都会有所帮助,看起来它是一个常见的问题,它是我可以利用的任何现有解决方案吗?

    由于

0 个答案:

没有答案