按时间戳排序的流数据聚合

时间:2015-04-01 12:46:51

标签: messaging distributed-caching nosql-aggregation stream-processing nosql

我有一个用例,我从客户端接收事件,其中一些事件在逻辑上相关(属于一个会话),并且基于时间戳的事件之间存在明确的顺序。

现在,我想构建一个解决方案,该解决方案应该继续聚合事件,直到按时间戳的递增顺序接收特定组的最后一个。因此,如果收到不按顺序发生的事件,则应该保持该事件直到收到它们之前的事件。然后,根据特定组的密钥将其存储在HBase等数据存储中。

问题是,一次这样的不完整群体的数量可以是数百万,并且需要能够支持快速附加到不完整群组并且保持无序接收的事件的东西。我应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您可以使用事件流处理或复杂事件处理框架http://en.wikipedia.org/wiki/Complex_event_processing。您编写查询/模式,将其加载到引擎中,使用事件提供引擎,并且查询将不断更新或在时机成熟时触发。

我喜欢Codehaus Esper,它是开源的,但是在非付费版本中受限制,我必须实现事件的存储并在应用程序启动时重新加载它们。另一种选择是Drools Fusion,但是当我在5年前试用它时,我发现它有问题。我最近正在研究WSO2 CEP,但这件事情严重不足。