Ice 规则引擎常见问题 FAQ
Ice 规则引擎使用过程中的常见问题解答,帮助您快速解决问题
关于 Ice 规则引擎
Ice 规则引擎可以用来做工作流引擎吗?
Ice 规则引擎本身是无状态的轻量级规则引擎。如果需要实现工作流引擎功能,建议在 Ice 规则引擎基础上进行二次开发封装。
Ice 规则引擎的定位:
- Ice 是一种抽象的业务编排框架,类似于抽象一个方法
- 理论上代码能实现的逻辑,Ice 规则引擎都可以实现
- 适用于规则配置、条件判断、业务编排等场景
- 如需工作流的状态持久化、流程审批等功能,需要额外开发
Ice 规则引擎与传统规则引擎的区别?
Ice 规则引擎与 Drools、Activiti 等传统规则引擎相比:
- 更轻量:零性能损耗,纯内存计算
- 更灵活:树形编排结构,节点独立,修改互不影响
- 更易用:可视化配置,学习成本低
- 更快速:毫秒级响应,适合高并发场景
规则引擎客户端 (Client) 问题
Client与Server网络故障会影响规则配置更新吗?
Ice 规则引擎的网络容错机制:
- 心跳机制:Client 默认每 5 秒向 Server 发送一个心跳
- 超时机制:Server 在 20 秒内没有收到 Client 心跳会关闭连接
- 自动恢复:Client 网络恢复后自动重连 Server
- 配置同步:重连成功后会全量拉取最新规则配置并更新
注意事项:
- 网络故障期间,Client 端的规则配置不会更新
- 建议在网络稳定环境下部署 Ice Server
- 可配置 Zookeeper 实现 Ice Server 高可用
日志信息
- 启动报错
Caused by: java.lang.RuntimeException: ice connect server error server:127.0.0.1:18121
at com.ice.core.client.IceNioClient.connect(IceNioClient.java:95)
at com.ice.client.config.IceNioClientApplication.run(IceNioClientApplication.java:24)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782)
... 5 common frames omitted
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /127.0.0.1:18121
Caused by: java.net.ConnectException: Connection refused
连接server失败,需要检查server的配置是否正确,和server的通信端口是否互通。
- 配置更新报错
一般为节点初始化失败错误,此类报错不会终止client启动
ERROR (IceConfCache.java:62)- class not found conf:{"id":118,"type":6,"confName":"*.*.*Flow"}
节点初始化error,在该client中未找到对应的节点类,请检查节点类是否正常或app配置是否正常。
ERROR (IceConfCache.java:91)- sonId:73 not exist please check! conf:{"id":70,"sonIds":"73,74","type":1}
节点初始化error,未找到对应id的子节点,一般为子节点初始化失败导致。
以上报错的节点如果未在业务中使用,可以忽略,如果使用了请检查。(后续会出垃圾节点回收,可直接回收不再使用的节点)
Server
- server挂了会影响client吗?
server仅负责配置的操作、存储与热更新,clinet在运行时不依赖server,server宕机后,会导致新的client无法启动(无法与server连通也就无法初始化配置)以及无法操作配置后台。
- server支持集群吗?
目前server仅支持单机部署,即将支持主备做HA。