性能
RuleGo绝大部分工作都是在初始化阶段完成。执行规则链几乎不会有性能损耗。另外RuleGo使用有向无环图来表示规则链,每个输入消息只需要沿着图中的路径进行处理,无需匹配所有的规则, 这大大提高了消息处理的效率和速度,也节省了资源和时间。路由算法能实现:不管规则链节点数量是多少,都不会影响节点路由性能。
然而,RuleGo本身性能很好,但是决定规则链整体性能的是节点的业务逻辑,如果你的组件有大量的数据库查询或者远程调用,一般吞吐量不会很高。
性能建议:
- 优化远程调用接口服务的性能。
- 使用内置AOP,自行实现节点处理后的数据缓存,减少节点重复处理。
- 替换内置的JSON编解码,使用更高性能的JSON库。
- 使用自定义组件,实现满足项目特殊需求的更高性能组件。
- RuleGo在普通的单台机器上可以支撑大量的并发。也可以部署多个RuleGo实例,加一层负载均衡,把请求分发到不同的RuleGo实例进行处理,实现海量数据的处理。
# 性能测试
以下是/examples/server /api/v1/msg/{chainId}/{msgType}
接口的性能测试结果。
规则链逻辑:js过滤->js转换节点。 机器配置CPU&内存:2核(vCPU) 2GiB 每次请求字节数:142字节
- 300并发测试结果
- 800并发测试结果
- RuleGo空闲时的CPU和内存占用
在 GitHub 上编辑此页 (opens new window)
上次更新: 2024/10/23, 10:13:01