美文网首页
基于Drools数据转发场景测试(二)

基于Drools数据转发场景测试(二)

作者: 淡淡的小番茄 | 来源:发表于2021-10-15 20:57 被阅读0次

背景

技术调研阶段,我们对Drools进行了简单的性能测试,模拟我们数据转发的场景,直接内存中构建msg然后触发,只是测试了drools的规则匹配的能力。现在我们想全流程测试下,具体流程如下:

分为两种方式,第一种方式在drools脚本中,将匹配后的结果,直接发送到kafka中。第二种方式规则匹配后将结果先发送到EventBus,然后再由单独的线程进行订阅发送到Kafka。

规则示例

package drools.example;

import com.cuiot.dmp.ruleengine.dto.Message;

template "forward"

rule "f"

when

$msg : Message(orgId =='@{orgId}' && productKey=='@{productKey}')

&& eval(hasProductLabels('@{productLabels}',$msg.getProductLabels())>0)

then

$msg.publish();

end

匹配的性能

规则总数1000条,能匹配成功的规则100条。耗时约:0.1-0.5ms。

资源消耗

两种方式CPU消耗如下。方式一减少了一个环节,CPU消耗也相应的降低了不少。内存占用都不多,GC一直很平稳。

以共享订阅的方式,部署两个示例。

EMQ发送消息:200TPS

两个进程分别占用的资源信息:

kafka监控的消息

尾记

总体的性能还是相当可以的,结合多线程&多节点部署完全满足我们的需求,扩展性也非常好,更重要的是轻量级,基于Drools api来实现,不需要引入额外的框架,技术风险完全可控。

相关文章

网友评论

      本文标题:基于Drools数据转发场景测试(二)

      本文链接:https://www.haomeiwen.com/subject/uepmoltx.html