ice

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:配置规则并执行

  1. 在 Server 可视化界面配置业务规则
  2. 发布规则,Client 自动热加载
  3. 在业务代码中调用规则执行
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?