【问题标题】:Drools for large volume of data用于大量数据的 Drools
【发布时间】:2015-10-20 20:16:03
【问题描述】:

我们有一个需求,一天需要处理大约 5MM 条消息,并根据一定的业务规则,为异步接收的消息生成一个唯一标识符。

用例:-

系统收到消息 A、消息 B、消息 C 和消息 D(所有消息类型的标准 xml 格式)。

业务规则:- 如果消息 A 包含标签 <tag1> 并且标签的值与消息 B、C 或 D 的 <tag2><tag3><tag4> 的值匹配;分配为第一次匹配分配的标识符。如果没有匹配,则生成新的标识符并分配给消息 A。 类似的规则适用于消息 B、C 或 D。

我们曾考虑使用 Drools Engine 实现来支持上述用例,但不确定它是否能处理如此大量的数据并近乎实时地处理。

有没有人使用 Drools Engine 处理大量数据,如果有,请您分享一下相同的问题或统计数据。

【问题讨论】:

  • 您是否需要在会话中保留所有 A、B、C 和 D 消息?或者这些消息是否以某种批处理操作到达,并且在标记后不再需要?
  • 每条消息有多大?
  • 由您提供相关数据。 A、B、C 或 D 中的一个有多大?每条消息在被分配标识符后的“生命周期”是什么?如果没有匹配怎么办?

标签: java drools


【解决方案1】:

对于仅检查 4 个条件的简单规则,您的描述 Drools 将执行得足够快。只需确保您只编译一次 rools 而不是每次执行规则。根据您上面描述的简单规则,您可能会看到在热状态下每分钟大约 100_000 次规则调用的性能。

查看这些基准以获得更好的想法: https://github.com/winklerm/phreak-examples/tree/master/benchmark

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多