当前位置: 首页 > 知识库问答 >
问题:

多客户端Web应用程序的Drools可行吗?

谢正初
2023-03-14

我正在开发一个基于多客户端网络的应用程序,该应用程序分析传感器数据,并将使用规则引擎根据这些数据调用操作。该应用程序的每个客户端都有一组环境传感器(10s-100s)和一组规则,在每次传感器值发生变化时进行评估(传感器值被复制到数据库中)。一组基本的规则通常会被不同的客户机重用,但这些规则是为每个客户机单独参数化的(例如,取决于时间),每个客户机都有不同数量的传感器和规则,可以单独配置。有些规则甚至可能是针对单一客户的。

我相信drools可能是这样一个实现的好选择——使用drools guvnor来管理每个客户机的规则。每个客户都有自己的知识库和规则执行会话。

我想知道这样的环境是否会扩展,是否有基准或现实世界的例子,有人在这种情况下使用了drools。

我能找到的大多数基准都是通过不同的规则引擎对越来越多的事实执行规则的能力来评估它们的。在我的场景中,事实的数量将相对稳定(每个客户端),可伸缩性将受到客户端数量以及许多知识库和会话的并发应用的限制。

任何有关此可伸缩性问题的基准测试或规则引擎比较的评论都是受欢迎的。我也很高兴听到真实世界的实现,其中每个客户端都有自己的规则和数据集要处理。

共有2个答案

白泽语
2023-03-14

作用于传感器数据是“复杂事件处理”的示例之一。下面的链接可能会对这个问题有更深入的了解。

Drools Fusion也能进行CEP。

麹学文
2023-03-14

基准测试的主要问题是,根据您为自己的域编写的特定规则,它们会有很大差异。大多数基准测试都经过调整,以便在测试的规则引擎中表现更好。如果每个客户端有一个会话,并且有稳定数量的客户端,您将不会面临任何问题。一旦您获得了项目的初始版本,您就可以微调引擎以提高性能。在我看来,最“困难”的事情是正确构建架构体系,我的意思是,何时创建会话以及如何为每个客户端选择规则。因为这是特定域的一部分,所以需要对其进行编码并管理所有会话。

希望有帮助

 类似资料:
  • 我需要一个用于java spring应用程序的graphQL客户端,以与另一个基于graphQL API的微服务通信。我知道Apollo Android,但它似乎没有用maven实现(也许你知道maven的一些链接或示例等)。有什么想法和建议吗?提前感谢!

  • 问题内容: 我已经将网站托管在本地服务器上,并且该网站可以由多个本地用户访问,并且当他们尝试访问Java代码时,我希望当他们访问特定页面时获得访问此页面的客户端/用户的os用户: 它获取服务器而不是客户端的操作系统用户名。 请告知如何完成该任务,谢谢。 问题答案: 使用java方法就可以了。

  • 使用OkHttp实现异步RESTAPI客户机,工作正常。出于好奇,尝试将其转换为WebClient,观察奇怪的行为。 WebClient配置就是这样: 请求代码: 在单元测试中,作为参数传递给此方法的回调完成了一个Future,我等待它。因此,当我在IDEA中运行测试时,请求产生一个响应,响应的正文为空(内容长度:0),subscribe()中的lambda永远不会执行-使用println调试进行

  • 我试图使用Spring反应式WebClient将文件上传到Spring控制器。控制器非常简单,看起来像这样: 当我使用这个控制器与cURL一切正常 multipartFile转到正确的参数,其他参数进入Map。 当我尝试从WebClient做同样的事情时,我被卡住了。我的代码如下所示: 这会导致400错误 有人知道如何解决这个问题吗?

  • 我想创建一个服务,可以拒绝\撤销对用户的移动邮件应用程序的访问。 具体来说,我想暂时撤销使用office365在线交换邮件对移动邮件客户端应用程序(如Nine)的访问,该应用程序被认证为Azure Active Directory应用程序。 到目前为止,我想出了如何执行类似或部分操作: > 我可以使用此链接手动撤消azure AD应用:https://account.activedirectory

  • 问题内容: 我在Javascript中使用以下代码进行Ajax调用: 我也想在Java中做到这一点。基本上,我想编写一个Java客户端应用程序,该应用程序通过Ajax调用将该数据发送到服务器。 如何在Java中执行Ajax? 问题答案: AJAX与任何其他HTTP调用均没有不同。您基本上可以从Java发布相同的URL,就目标服务器而言,这无关紧要: 上面的代码或多或少与您的jQuery AJAX调