Ice 规则引擎更新日志

记录 Ice 规则引擎每个版本的功能更新、性能优化和问题修复

2.0.1在新窗口打开 (2025-12) ✨

Ice 规则引擎 2.0.1 - 多语言 SDK 正式发布

🌐 多语言 SDK

本版本正式发布 Go 和 Python SDK,与 Java SDK 功能完全对等:

# Go
go get github.com/zjn-zjn/ice/sdks/go

# Python
pip install ice-rules

✨ 新特性

📝 字段描述增强

三种语言统一支持字段描述,在 Server UI 中友好展示:

语言方式示例
Java@IceField 注解@IceField(name="分数", desc="阈值") double score;
Goice struct tagScore float64 \ice:"name:分数,desc:阈值"``
PythonAnnotated + IceFieldscore: Annotated[float, IceField(name="分数")]

🏷️ 叶子节点别名 (Alias)

支持多语言兼容配置,不同语言的类名可相互映射:

// Java
@IceNode(alias = {"score_flow"})
public class ScoreFlow extends BaseLeafRoamFlow { }
// Go
ice.RegisterLeaf("com.example.ScoreFlow",
    &ice.LeafMeta{Alias: []string{"score_flow"}},
    func() any { return &ScoreFlow{} })
# Python
@ice.leaf("com.example.ScoreFlow", alias=["score_flow"])
class ScoreFlow: ...

🚫 字段忽略

不想被配置的字段可以忽略:

语言方式
Java@IceIgnore
Gojson:"-"ice:"-"
Python_ 前缀 或 Annotated[..., IceIgnore()]

🔧 优化

  • 📦 Monorepo 项目结构:统一管理 Java/Go/Python SDK
  • 配置热更新优化:增量更新更稳定
  • 🐛 Bug 修复:修复多个边界情况

📋 版本信息

组件版本
Java SDK2.0.1
Go SDKv1.0.1
Python SDK2.0.1
ice-server2.0.1

2.0.0在新窗口打开 (2025-12) 🚀

Ice 规则引擎 2.0 重大架构升级 - 零依赖、容器化、更轻量

🎯 核心变更

2.0.0 版本对 Ice 进行了彻底的架构革新,移除了对 MySQL 数据库和 NIO 通信的依赖,改为完全基于文件系统的存储方案,并原生支持 Docker 容器化部署。

💾 存储架构革新

  • 文件系统存储:移除 MySQL 依赖,使用本地文件系统存储所有配置数据
  • 📁 JSON 文件格式:所有配置以 JSON 文件形式存储,便于版本控制和人工审查
  • 🔄 增量版本更新:支持增量配置更新,客户端通过轮询版本文件获取最新配置
  • 🗂️ 清晰的目录结构
    • apps/ - 应用配置
    • {app}/bases/ - Base 规则配置
    • {app}/confs/ - Conf 节点配置
    • {app}/versions/ - 版本增量更新文件
    • clients/ - 客户端注册信息

🔗 通信架构简化

  • 🚫 移除 NIO 通信:不再需要 Server-Client 的 NIO 长连接
  • 🚫 移除 ZooKeeper HA:不再依赖 ZooKeeper 进行高可用
  • 📡 文件轮询同步:客户端通过轮询文件系统获取配置更新
  • 💓 心跳机制:客户端定期写入心跳文件,Server 端可感知客户端状态

🐳 Docker 原生支持

  • 📦 官方 Docker 镜像waitmoon/ice-server:2.0.0
  • 🏗️ 多架构支持:支持 linux/amd64 和 linux/arm64
  • 📝 Docker Compose:提供开箱即用的 docker-compose.yml
  • 🔧 环境变量配置:支持通过环境变量灵活配置
  • ♻️ CI/CD 集成:GitHub Actions 自动构建发布镜像

📋 详细变更

配置变更

  • 移除 spring.datasource 数据库配置
  • 移除 ice.port NIO 端口配置
  • 移除 ice.ha 高可用配置
  • 新增 ice.storage.path 文件存储路径配置
  • 新增 ice.client-timeout 客户端超时配置
  • 新增 ice.version-retention 版本文件保留数量配置
  • 客户端新增 ice.poll-interval 轮询间隔配置
  • 客户端新增 ice.heartbeat-interval 心跳间隔配置

⚠️ 升级注意事项

  1. 数据迁移:从 1.x 升级需要手动将 MySQL 中的配置数据导出为 JSON 文件
  2. 配置更新:需要更新 application.yml 配置文件,移除数据库配置,添加文件存储配置
  3. 依赖变更:可移除 MySQL 驱动和 MyBatis 相关依赖
  4. 部署方式:推荐使用 Docker 部署,简化运维

🚀 快速开始

Docker 一键部署:

docker run -d --name ice-server \
  -p 8121:8121 \
  -v ./ice-data:/app/ice-data \
  waitmoon/ice-server:2.0.0

使用 Docker Compose:

docker-compose up -d

1.5.0在新窗口打开 (2025-02-20) 🎉

Ice 规则引擎重大版本更新

新功能

  • ✨ 全新的可视化树图结构,规则编排更直观
  • 🚀 支持 SpringBoot 3.x 和 JDK 17+
  • 📦 Starter 拆分为 2x/3x 版本,分别适配不同 SpringBoot 版本

1.3.1在新窗口打开 (2023-06-02)

功能

  • 增加节点回收功能
  • #17 兼容spring-boot-devtools

1.3.0在新窗口打开 (2023-06-02)

功能

  • 一些改进和修复,年代久远不太记得了...

1.2.0在新窗口打开 (2023-04-10)

功能

  • 新的配置页面: 新的配置页面,支持配置描述,拖动节点编排等(close #16在新窗口打开)

1.1.0在新窗口打开 (2022-07-30)

功能

1.0.4在新窗口打开 (2022-07-30)

优化

  • 确保Ice启动后才对外提供服务: 老版本使用CommandLineRunner的方式启动ice,这种启动方式是滞后于Tomcat等服务的。会导致短时间内对外提供的ice服务不可用 (close #12在新窗口打开)

1.0.3在新窗口打开 (2022-07-14)

修复

  • 启动阻塞问题: 节点类中如果使用了@Bean注解生成的spring bean,在autowiredBean时会阻塞ice启动 (close #11在新窗口打开)

1.0.2在新窗口打开 (2022-07-05)

功能

  • Jackson替换Fastjson: 使用Jackson替换Fastjson (close #8在新窗口打开)
  • 配置叶子节点优化: 通过客户端实现的节点反馈给服务端配置节点 (close #9在新窗口打开)
  • 增加错误入参: IceErrorHandle.handleError()和BaseNode.errorHandle()增加入参Throwable t,方便根据不同错误类型做不同处理

修复

  • putMutli线程安全问题: 修复IceRoam的putMutli在构建多层级时可能出现的线程安全问题

1.0.1在新窗口打开 (2022-06-11)

功能

0.0.9在新窗口打开 (2022-04-12)