iceice
💒首页
  • 快速上手
  • 详细指南
  • 项目简介
  • 常见问题
🧩体验
💖赞助
  • 更新日志
  • 升级指南
  • 深入

    • 架构设计
    • 项目结构
  • 友情链接

    • 流程编排框架-Kstry
👥加入群聊
  • GitHub
  • Gitee
  • English
  • 简体中文
💒首页
  • 快速上手
  • 详细指南
  • 项目简介
  • 常见问题
🧩体验
💖赞助
  • 更新日志
  • 升级指南
  • 深入

    • 架构设计
    • 项目结构
  • 友情链接

    • 流程编排框架-Kstry
👥加入群聊
  • GitHub
  • Gitee
  • English
  • 简体中文
  • 升级

Ice 规则引擎升级指南

⚠️ 重要提示:升级 Ice 规则引擎时,请先升级 Server,再升级 Client

v3.0.1 → v3.0.2 Client 优化 🔧

变更内容

  • Client Address 精简:地址格式从 IP/app/xxxxxxxxxxx 缩短为 IP_xxxxx,更简洁易读
  • IP 获取统一:Java/Python/Go SDK 统一使用网卡遍历获取非回环 IPv4
  • 移除 Spring Boot Starter:移除 ice-spring-boot-starter-2x 和 ice-spring-boot-starter-3x,所有 Java 项目统一使用 ice-core

升级步骤

Server 无需更新,仅需升级 Client SDK。

Java SDK

将依赖从 ice-spring-boot-starter-2x / ice-spring-boot-starter-3x 替换为 ice-core:

<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-core</artifactId>
  <version>3.0.2</version>
</dependency>

删除 application.yml 中的 ice.* 配置,改为代码方式初始化 Client:

IceFileClient client = new IceFileClient(1, "./ice-data", "com.your.package");
client.start();

如果是 Spring 项目,需要设置 IceBeanUtils 以支持叶子节点注入 Spring Bean:

@Configuration
public class IceConfig implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext ctx) {
        AutowireCapableBeanFactory bf = ctx.getAutowireCapableBeanFactory();
        IceBeanUtils.setFactory(new IceBeanUtils.IceBeanFactory() {
            @Override
            public void autowireBean(Object bean) { bf.autowireBean(bean); }
            @Override
            public boolean containsBean(String name) { return ctx.containsBean(name); }
            @Override
            public Object getBean(String name) { return ctx.getBean(name); }
        });
    }

    @Bean(destroyMethod = "destroy")
    public IceFileClient iceFileClient() throws Exception {
        IceFileClient client = new IceFileClient(1, "./ice-data", "com.your.package");
        client.start();
        return client;
    }
}

Go SDK

go get github.com/zjn-zjn/ice/sdks/go@v1.1.1

Python SDK

pip install --upgrade ice-rules

v3.0.0 → v3.0.1 Server 优化 🔧

变更内容

  • Server 代码重构:重构 Server 端代码结构,提升可维护性
  • 文件夹操作:支持文件夹操作能力
  • 脏检查:新增脏检查机制
  • UI 优化:多项界面交互优化

升级步骤

Docker 用户(无需任何改动)

docker pull waitmoon/ice-server:3.0.1

手动部署用户

从 https://waitmoon.com/downloads/3.0.1/ 下载对应平台包

Java SDK

<version>3.0.1</version>

v2.1.x → v3.0.0 Server Go 重写 🚀

变更内容

  • Server 从 Java 重写为 Go:单二进制部署,无需 JDK
  • 多平台预编译包:Linux/macOS/Windows (amd64/arm64)
  • SDK 版本号升级:功能不变,仅版本号统一升级至 3.0.0
  • 数据完全兼容:文件存储格式不变,无需迁移

升级步骤

Docker 用户(无需任何改动)

docker pull waitmoon/ice-server:3.0.0

手动部署用户

从 https://waitmoon.com/downloads/3.0.0/ 下载对应平台包:

# Linux amd64
tar -xzvf ice-server-3.0.0-linux-amd64.tar.gz
cd ice-server
sh ice.sh start

# macOS arm64 (Apple Silicon)
tar -xzvf ice-server-3.0.0-darwin-arm64.tar.gz
cd ice-server
sh ice.sh start

Java SDK

<version>3.0.0</version>

Go SDK

go get github.com/zjn-zjn/ice/sdks/go@v1.1.0

Python SDK

pip install --upgrade ice-rules

v2.1.2 → v2.1.3

变更内容

  • 前置节点展示优化:前置节点使用紫色 + ◀ 箭头前缀,与编辑中节点(橙色虚线边框)明确区分
  • 配色方案统一:前置节点紫色、编辑中节点橙色虚线、未注册节点灰色

升级步骤

替换 ice-server jar 或 Docker 镜像即可,客户端 SDK 无需变更。

docker pull waitmoon/ice-server:2.1.3

手动部署可下载:https://waitmoon.com/downloads/ice-server-2.1.3.tar.gz


v2.1.0 → v2.1.2

变更内容

  • 优化 node-meta 接口响应数据:移除 ClientInfo 中冗余的 classes 字段,减少切换泳道/地址时的网络传输和服务端开销

升级步骤

替换 ice-server jar 或 Docker 镜像即可,客户端 SDK 无需变更。

docker pull waitmoon/ice-server:2.1.2

手动部署可下载:https://waitmoon.com/downloads/ice-server-2.1.2.tar.gz


v2.0.8 → v2.1.0

变更内容

  • Server UI / 编辑体验增强:节点编辑页变更检测更准确(A→B→A 不再误判为有变更),并支持按主干/泳道/客户端地址展示“未注册节点”提示样式
  • 节点元信息增强:新增 node-meta 接口,提供泳道/客户端发现与叶子节点类元数据(字段定义等)
  • 批量导出与基础能力补全:支持批量导出与 Base 创建等能力

升级步骤

优先升级 Server,再升级 Client SDK(如有需要)。

docker pull waitmoon/ice-server:2.1.0

手动部署可下载:https://waitmoon.com/downloads/ice-server-2.1.0.tar.gz


v2.0.7 → v2.0.8

变更内容

  • 修复泳道 _latest.json 被误删:清理任务不再无条件删除泳道下的 _latest.json,只在泳道无客户端文件时才清理

升级步骤

替换 ice-server jar 或 Docker 镜像即可,客户端 SDK 无需变更。

docker pull waitmoon/ice-server:2.0.8

v2.0.1 → v2.0.6

变更内容

  • 新增泳道(Swimlane)支持:客户端可按泳道注册,不同泳道的节点信息互相隔离
  • Server UI:配置页面顶部新增泳道选择器
  • 节点搜索修复:修复前端叶子节点选择下拉框搜索不生效的问题

升级步骤

Java SDK

更新版本号:

<version>2.0.6</version>

如需使用泳道功能,在 application.yml 中添加:

ice:
  lane: feature-xxx  # 泳道名称,不配置则为主干

Go SDK

go get github.com/zjn-zjn/ice/sdks/go@v1.0.6

泳道配置:

client, err := ice.NewClientWithOptions(
    1, "./ice-data", -1,
    5*time.Second, 10*time.Second,
    "feature-xxx",  // 泳道名称,空字符串表示主干
)

Python SDK

pip install --upgrade ice-rules

泳道配置:

client = ice.FileClient(app=1, storage_path="./ice-data", lane="feature-xxx")

Ice Server

下载最新版本 ice-server-2.0.6.tar.gz,替换 jar 后重启即可。


v2.0.0 → v2.0.1

变更内容

  • 仓库路径变更:GitHub 仓库路径统一为 github.com/zjn-zjn/ice
  • Go SDK:模块路径更新为 github.com/zjn-zjn/ice/sdks/go,版本号 v1.0.3
  • 代码规范:Java SDK 注释统一为英文

升级步骤

Java SDK

无代码变更,直接更新版本号即可:

<version>2.0.1</version>

Go SDK

go get github.com/zjn-zjn/ice/sdks/go@v1.0.3

Python SDK

pip install --upgrade ice-rules

v1.5.0 → v2.0.0 重大架构升级 🚀

Ice 规则引擎 2.0.0 是一次架构革新,移除了 MySQL 和 ZooKeeper 依赖,改用文件系统存储,并原生支持 Docker 部署。

⚠️ 重要变更

变更项1.x 版本2.0.0 版本
存储方式MySQL 数据库文件系统(JSON)
通信方式NIO 长连接文件轮询
高可用ZooKeeper共享存储(NFS/云盘)
部署方式手动部署Docker 一键部署

服务端升级(Ice Server)

1. 数据迁移

从 MySQL 导出配置数据到 JSON 文件格式(后续版本将提供迁移工具)。

2. 配置变更

# 旧配置(1.x)
server:
  port: 8121
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ice
    username: root
    password: password
ice:
  port: 18121  # NIO端口
  ha:
    address: localhost:2181  # ZK地址

# 新配置(2.0.0)
server:
  port: 8121
ice:
  storage:
    path: ./ice-data  # 文件存储路径
  client-timeout: 60  # 客户端超时(秒)
  version-retention: 1000  # 版本文件保留数量

3. 依赖变更

可移除以下依赖:

  • MySQL 驱动
  • MyBatis 相关依赖
  • ZooKeeper/Curator 依赖
  • Netty 依赖

4. 推荐使用 Docker 部署

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

客户端升级(Ice Client)

1. 依赖更新

<!-- SpringBoot 2.x -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-2x</artifactId>
  <version>2.0.1</version>
</dependency>

<!-- SpringBoot 3.x -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-3x</artifactId>
  <version>2.0.1</version>
</dependency>

<!-- 非SpringBoot -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-core</artifactId>
  <version>2.0.1</version>
</dependency>

2. 配置变更

# 旧配置(1.x)
ice:
  app: 1
  server: 127.0.0.1:18121  # NIO服务器地址
  # server: zookeeper:localhost:2181  # ZK高可用
  scan: com.ice.test

# 新配置(2.0.0)
ice:
  app: 1
  storage:
    path: ./ice-data  # 与Server共享的存储路径
  scan: com.ice.test
  poll-interval: 5  # 版本轮询间隔(秒)
  heartbeat-interval: 10  # 心跳间隔(秒)

3. 代码变更(非SpringBoot项目)

// 旧代码(1.x)
IceNioClient client = new IceNioClient(1, "127.0.0.1:18121", "com.ice.test");
client.start();

// 新代码(2.0.0)
IceFileClient client = new IceFileClient(1, "./ice-data", "com.ice.test");
client.start();

4. 重要:存储路径共享

Client 需要与 Server 共享同一个存储目录:

  • 本地开发:使用相同的本地路径
  • Docker 环境:通过卷挂载共享
  • 分布式环境:使用 NFS 或云盘

v1.3.0 → v1.5.0 重大版本升级

Ice 规则引擎 1.5.0 是一个重大版本更新,带来了全新的可视化界面和 SpringBoot 3.x 支持。

服务端升级(Ice Server)

全新的可视化树图结构

  • ✨ 新增拖拽式规则编排界面
  • 🎨 优化规则配置页面交互
  • 📊 增强规则可视化展示

客户端升级(Ice Client)

1. SDK 兼容性

  • ✅ 本次升级完全兼容老的 Client SDK,可不升级
  • 建议升级以获得更好的性能和新特性支持

2. 依赖名称变更

Ice 规则引擎客户端依赖名称调整,以支持不同的 SpringBoot 版本:

<!-- 旧版本(不再推荐) -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-client-spring-boot-starter</artifactId>
  <version>1.3.0</version>
</dependency>

<!-- 新版本 - SpringBoot 2.x -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-2x</artifactId>
  <version>1.5.0</version>
</dependency>

<!-- 新版本 - SpringBoot 3.x -->
<dependency>
  <groupId>com.waitmoon.ice</groupId>
  <artifactId>ice-spring-boot-starter-3x</artifactId>
  <version>1.5.0</version>
</dependency>

v1.2.0-v1.3.0

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

v1.1.0-v1.2.0

  • 配置

    • 服务端
      • 配置页面调整
    • 客户端
      • 增加@IceNode、@IceField、@IceIgnore注解用于提高配置的可解释性

v1.0.4-v1.1.0

  • 配置

    • 服务端
      • 新增ice.ha配置,用于支持server高可用,单机server无需配置
    • 客户端
      • ice.server配置支持server高可用,如ice.server=zookeeper:localhost:2181,单机server与以往配置一致

v1.0.3-v1.0.4

  • 代码
    • IceNioClient.connect()变成start(),仅非Spring项目使用需修改

v1.0.1-v1.0.3/v1.0.3

  • 配置

    • 客户端
      • 新增ice.scan配置,用于扫描叶子节点(默认扫描全部,扫描全部会拖慢应用启动速度),多个包用','分隔
  • 代码

    • Ice.processCxt和Ice.processSingleCxt更名为processCtx和processSingleCtx
    • IceErrorHandle.handleError()和BaseNode.errorHandle()增加错误入参Throwable t

v1.0.1

不要使用1.0.0!!!因为打包推送中央仓库时的网络问题,导致1.0.0 jar包不完整!

  • 配置

    • 服务端
      • ice.rmi.port去除rmi变成ice.port,升级时推荐替换掉原有端口号,避免脏数据问题
    • 客户端
      • 去除ice.rmi.mode,ice.rmi.port
      • ice.rmi.server去除rmi变成ice.server
  • 代码

    • Ice替代IceClient,process()变成asyncProcess()
  • 功能

    • 脱离spring运行,client = new IceNioClient(app, server).connect()connect()为阻塞方法,可开启新线程运行,new Thread(client::connect).start(),运行结束client.destroy()销毁即可
在 GitHub 上编辑此页
上次更新: 2026/3/20 01:00
贡献者: waitmoon, Claude, Claude Opus 4.6