ice
致力于解决灵活繁复的硬编码问题
🎯 可视化规则编排
采用创新的树形编排思想,提供 Web 可视化配置界面。在保障业务解耦和代码复用的同时,提供最大的规则配置自由度。
⚡ 轻量高性能
纯内存运算,毫秒级响应,几乎零性能损耗。完美支持高并发业务场景,让您只需关注业务逻辑本身。
🐳 零依赖架构
无需 MySQL、ZooKeeper 等外部依赖。Docker 一键部署,5 秒完成。配置以 JSON 文件存储,支持版本控制。
🚀 三步快速开始
Step 1:部署 Ice Server
docker run -d --name ice-server -p 8121:8121 \
-v ./ice-data:/app/ice-data \
waitmoon/ice-server:latest
# 从官网下载:https://waitmoon.com/downloads/
# 解压并启动
tar -xzvf ice-server-*.tar.gz && cd ice-server
sh ice.sh start
访问 http://localhost:8121 进入可视化配置界面。
Step 2:集成 Ice Client SDK
在您的业务应用中添加依赖:
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-spring-boot-starter-3x</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-spring-boot-starter-2x</artifactId>
<version>2.0.1</version>
</dependency>
go get github.com/zjn-zjn/ice/sdks/go
pip install ice-rules
<dependency>
<groupId>com.waitmoon.ice</groupId>
<artifactId>ice-core</artifactId>
<version>2.0.1</version>
</dependency>
配置共享存储路径(与 Server 相同):
ice:
app: 1
storage:
path: ./ice-data
client, _ := ice.NewClient(1, "./ice-data")
client.Start()
client = ice.FileClient(app=1, storage_path="./ice-data")
client.start()
💡 关键点:Client 需要与 Server 共享同一个存储目录(
ice-data)
Step 3:配置规则并执行
- 在 Server 可视化界面配置业务规则
- 发布规则,Client 自动热加载
- 在业务代码中调用规则执行
IcePack pack = new IcePack();
pack.setIceId(1L); // 规则 ID
pack.setRoam(new IceRoam().put("uid", 12345));
Ice.syncProcess(pack);
pack := ice.NewPack().SetIceId(1)
pack.Roam.Put("uid", 12345)
ice.SyncProcess(context.Background(), pack)
pack = ice.Pack(ice_id=1)
pack.roam.put("uid", 12345)
ice.sync_process(pack)
👉 查看完整快速上手指南 | Go SDK 指南 | Python SDK 指南
适用场景
| 场景 | 说明 |
|---|---|
| 🎁 营销活动 | 优惠券、满减、拼团等复杂营销规则的灵活配置 |
| 💰 风控决策 | 信贷风控、反欺诈、实时风险评估引擎 |
| 🔐 权限控制 | 动态权限管理、角色配置、资源访问控制 |
| 📊 流程编排 | 工单流转、审批流程、状态机管理 |
为什么选择 Ice?
| 特性 | Ice | 传统规则引擎 |
|---|---|---|
| 学习成本 | 5 分钟上手 | 需要学习 DSL |
| 部署复杂度 | Docker 一键部署 | 依赖数据库/中间件 |
| 配置方式 | Web 可视化 | 文本/代码 |
| 性能 | 纯内存,毫秒级 | 编译执行,有开销 |
| 修改规则 | 热更新,秒级生效 | 需重启或重新部署 |
用户列表
谁在使用 Ice?










