0

要求是:几个服务产生大量带有数据流的请求(每个请求 1-10 兆字节),几个消费者原子地处理这些请求。

所以请求数据不能拆分。关键要求是,如果某些消费者未能处理请求 - 该请求必须重新注入队列并发送给不同的消费者。处理单个请求可能需要数十分钟。消费者可能在处理过程中“死亡”,因此需要某种任务监控。

到目前为止我考虑过

但他们似乎都不符合我的要求。有什么建议么?

4

2 回答 2

2

我不能说activemq,但在kafka和storm之间我会选择storm。目前尚不清楚您所说的failed to process request是什么意思,但如果storm worker 完全失败(即不响应心跳),Storm master(nimbus)可能会将任务从死掉的worker 重新分配给另一个(也许,在不同的机器上)。

另请参阅了解 Storm 拓扑的并行性

Kafka 是一个非常简单的消息代理,如果没有一些高级别的协调,它就不能做你提到的开箱即用的事情。

于 2013-05-21T14:47:43.870 回答
2

关于您的要求(每个请求 > 1 MB,处理 > 10 分钟)......它还在发送消息吗?

我只是把它放在一个数据库(RDBMS)中。如果轮询不可接受,我会考虑在数据库中使用触发器/存储过程。用 Scala 编写的存储过程可以在 Oracle 和 PostgreSql 中完美运行。

于 2013-05-22T11:31:49.203 回答