流口水水平缩放

问题描述 投票:0回答:1

我们有一个现有的 Drools 应用程序,用于接收事实并执行规则。由于我们的目标是扩展应用程序以每秒处理至少一百万个请求,因此鉴于最新版本的 Drools 中 Business Central 已被弃用,我们正在寻求有关水平扩展的推荐方法的指导。此外,对于我们的应用程序来说,在扩展时支持时间规则至关重要。

为了提供一些背景信息,我们扩展 Drools 应用程序的主要要求如下:

i) 可扩展性:应用程序应该能够每秒处理至少一百万个请求。我们正在寻找在多个实例之间有效分配工作负载的策略。

ii) 时间规则支持:应用程序应支持时间规则,确保在水平扩展时正确评估基于时间的条件和约束。

考虑到这些要求,我们恳请您就水平扩展 Drools 应用程序的推荐方法和最佳实践提供专业知识和建议。

我们尝试过拥有多个实例,同时将数据传递到不同的实例,我们可以减少工作量,但对于时间规则来说这会失败。

drools complex-event-processing drools-fusion
1个回答
0
投票

您必须在内存中拥有所有需要的数据才能做出决定(评估规则)。

如果您的场景是根据历史数据评估不相关的事务,请将历史数据存储在分布式文件系统(例如 HBase)上,根据不相关的输入根据需要水平扩展。应用程序需要加载和分析规则执行逻辑所需的所有数据。您可能需要细心的索引来加载您需要的数据和快速的网络。

如果您的场景是评估彼此相关的事件。
Drools 入口点 可以被视为 SQL DB 中的分区。 如果您可以对数据进行分区,则可以在不同的硬件上处理每个分区。如果需要,您可以为所有节点复制一些数据。

优化您的处理。如果无法扩展 rete 评估,请从该节点中提取所有计算。例如,您有一个具有 40 个 CPU 和 120 GB 内存的节点,它从(快速消息基础设施)Kafka 加载事件,仅进行重新计算并将输出事件发送回 Kafka,该规则针对输入事件执行。然后水平扩展下游规则处理。

© www.soinside.com 2019 - 2024. All rights reserved.