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

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

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

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

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

    • Ice 项目简介 - 全新的规则引擎编排思想
    • Ice 架构概览 - Server/Client 架构说明
    • Ice 快速上手 - 5分钟快速接入指南
    • Ice Client SDK 集成指南
    • Ice Go SDK 集成指南 - Golang 规则引擎客户端
    • Python SDK
    • Ice 详细说明 - 完整的功能和配置文档
    • Ice 常见问题 - FAQ答疑解惑

Ice 架构概览

理解 Ice 的 Server + Client + 共享存储架构模式

整体架构

Ice 采用 零外部依赖 的极简架构,通过文件系统实现配置存储和同步。

┌─────────────────────────────────────────────────────────────┐
│                    共享存储目录 (ice-data/)                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────────┐    │
│  │  apps/  │  │ bases/  │  │ confs/  │  │  versions/  │    │
│  │ 应用配置 │  │ 规则配置 │  │ 节点配置 │  │  版本增量   │    │
│  └─────────┘  └─────────┘  └─────────┘  └─────────────┘    │
└─────────────────────────────────────────────────────────────┘
        ▲ 写入配置                          ▲ 读取配置
        │                                   │
┌───────┴───────┐                   ┌───────┴───────┐
│   Ice Server  │                   │   Ice Client  │
│  (配置管理)    │                   │  (规则执行)    │
│               │                   │               │
│ • Web 管理界面 │                   │ • 轮询版本文件 │
│ • 规则编排配置 │                   │ • 加载增量更新 │
│ • 版本发布管理 │                   │ • 内存执行规则 │
└───────────────┘                   └───────────────┘

架构特点

特点说明
🚫 无数据库依赖不需要 MySQL,配置以 JSON 文件存储
🚫 无中间件依赖不需要 ZooKeeper、Redis 等
🚫 无长连接通信不需要 NIO/Netty,Client 通过轮询文件获取更新
✅ 文件系统同步Server 和 Client 共享同一存储目录
✅ Docker 友好一行命令即可部署

核心组件

Ice Server - 规则管理平台

功能定位:可视化规则配置管理中心

核心能力:

  • 提供 Web 可视化规则配置界面
  • 以 JSON 文件存储所有规则配置
  • 支持规则版本管理和历史回溯
  • 生成增量更新供 Client 消费
  • 多应用(App)隔离管理

Ice Client - 规则执行引擎

功能定位:业务应用的规则执行核心

核心能力:

  • 从文件系统加载规则配置到内存
  • 轮询版本文件检测配置变更
  • 提供高性能的规则执行接口
  • 支持多种节点类型和编排模式
  • 纯内存运算,毫秒级响应

共享存储 - 配置同步桥梁

功能定位:Server 和 Client 的配置同步媒介

存储结构:

ice-data/
├── apps/                    # 应用配置
│   ├── _id.txt             # ID 生成器
│   └── {app}.json          # 应用信息
├── clients/                 # 客户端信息
│   └── {app}/
│       ├── {address}.json  # 心跳文件
│       └── _latest.json    # 最新客户端
└── {app}/                   # 应用规则
    ├── version.txt         # 版本号
    ├── bases/              # Base 配置
    ├── confs/              # Conf 配置
    ├── versions/           # 增量更新
    └── history/            # 发布历史

配置同步流程

1. Server 发布配置

用户在 Web 界面修改规则
        ↓
点击「发布」按钮
        ↓
Server 更新 bases/ 和 confs/ 文件
        ↓
生成增量文件到 versions/
        ↓
更新 version.txt 版本号

2. Client 轮询更新

Client 定期检查 version.txt(默认 5 秒)
        ↓
发现新版本号
        ↓
读取 versions/ 增量更新文件
        ↓
热更新内存中的规则配置

3. 心跳机制

Client 定期写入心跳文件到 clients/
        ↓
Server 读取心跳文件感知 Client 状态
        ↓
超时未更新的 Client 被标记为离线

部署方式

单机部署

最简单的部署方式,Server 和 Client 在同一台机器:

# 启动 Server
docker run -d --name ice-server \
  -p 8121:8121 \
  -v ./ice-data:/app/ice-data \
  waitmoon/ice-server:latest

# Client 配置相同路径
ice:
  storage:
    path: ./ice-data

Docker Compose 部署

version: '3.8'
services:
  ice-server:
    image: waitmoon/ice-server:latest
    ports:
      - "8121:8121"
    volumes:
      - ./ice-data:/app/ice-data

  your-app:
    build: .
    volumes:
      - ./ice-data:/app/ice-data  # 共享存储
    depends_on:
      - ice-server

分布式部署

多个 Server/Client 实例共享存储:

services:
  ice-server-1:
    image: waitmoon/ice-server:latest
    volumes:
      - /shared/ice-data:/app/ice-data  # NFS/云盘

  ice-server-2:
    image: waitmoon/ice-server:latest
    volumes:
      - /shared/ice-data:/app/ice-data

  client-1:
    volumes:
      - /shared/ice-data:/app/ice-data

  client-2:
    volumes:
      - /shared/ice-data:/app/ice-data

推荐共享存储方案:

  • NFS:网络文件系统,适合内网环境
  • 云盘:阿里云 NAS、AWS EFS、Azure Files 等
  • 分布式文件系统:GlusterFS、CephFS 等

性能特点

特性说明
零网络开销配置同步基于文件系统,无网络通信延迟
纯内存执行规则执行完全在内存中进行,毫秒级响应
增量更新只加载变更的配置,减少资源消耗
无锁设计节点执行互不干扰,天然支持高并发

下一步

  • 📖 快速上手 - 开始接入 Ice
  • 🔧 详细说明 - 深入了解配置细节
  • 🏗️ 深入架构 - 技术实现原理
在 GitHub 上编辑此页
上次更新: 2025/12/4 22:16
贡献者: waitmoon
Prev
Ice 项目简介 - 全新的规则引擎编排思想
Next
Ice 快速上手 - 5分钟快速接入指南