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。