System Architecture

企业级架构,为生产而生

管理端与决策端分离部署,多模块清晰职责,多级缓存与多租户隔离贯穿整个链路。

整体架构

前后端分离,Admin 与 Engine 双服务部署,共享数据层与缓存层。

接入层
🌐
Nginx / API Gateway
反向代理 · TLS 终止 · 限流
客户端
💻
Admin Web
Vue 3TypeScriptAnt Design
🔌
业务方接入
RESTAPI KeyJWT
应用服务层
🛠️
radar-admin
:8080
  • 模型 / 策略 / 规则管理
  • 名单库 / 特征源管理
  • 用户 / 租户 / RBAC
  • 版本快照 / A/B 测试
🚀
radar-engine
:8081
  • 决策执行 (毫秒级)
  • 决策流引擎 (DAG)
  • 特征实时计算
  • 缓存 / 限流 / 熔断
📊
Monitor Worker
异步采集
  • 指标采集 / 聚合
  • 规则命中统计
  • SLA 告警评估
  • 企微 / 邮件通知
共享业务层
Spring Boot 3.4 · Maven 多模块
radar-service 业务逻辑
radar-dal MyBatis-Plus · Flyway
radar-model PO / DTO / VO
radar-common JWT · 审计 · 工具
数据 / 中间件层
🗄️
MySQL 8
主存储
Redis 7
L2 缓存 · Pub/Sub
🧠
Caffeine
L1 本地缓存
📨
Kafka
异步事件 (可选)
🔎
Elasticsearch
日志检索 (可选)
📡
缓存失效同步链路
Admin 修改配置 Redis Pub/Sub 广播到所有 Engine 节点 清理本地 Caffeine 缓存

功能模块

围绕风控决策全链路,划分为 8 大功能模块,按业务能力组织,开箱即用。

🧠

模型与策略管理

以「模型」为根组织决策资产,每个模型下挂载多种策略类型 (规则引擎、决策树、评分卡、决策表、名单匹配、规则集), 支持草稿 / 发布 / 下线状态流转。

🌊

决策流编排

基于 Vue Flow 的可视化 DAG 编辑器,支持节点拖拽、条件分支、并行执行。 DRAFT 状态可直接仿真,节点轨迹实时可见,不写入生产日志。

📊

特征库

集中化特征注册、定义与版本管理;支持原始特征、衍生特征、 时间窗口聚合特征;多模型共享同一特征源,避免重复加工。

决策执行引擎

独立部署的高性能决策端(:8081),基于 Aviator 表达式引擎, 支持 Caffeine + Redis 多级缓存,单次决策稳定毫秒级响应。

📋

名单库管理

统一管理黑/白/灰名单,支持手机号、设备号、IP、身份证等多种命中维度, 批量导入导出,支持过期自动失效。

📈

监控告警

实时指标大盘、规则命中统计、特征监控、SLA 告警; 支持企业微信、邮件多渠道通知,第一时间发现策略异常。

🏷️

版本与 A/B 测试

模型/策略一键打版本快照,支持灰度发布、流量分配、 Champion-Challenger 对比,一键回滚到任意历史版本。

🏢

租户与权限

MyBatis-Plus 拦截器行级租户隔离 + RBAC 角色权限模型 + API Key 管理 + 操作审计日志,满足 SaaS 化部署与合规要求。

📚

模板市场

预置互金、消金、反欺诈等行业模板(决策流、策略、规则集合), 一键导入到当前租户,开箱即用。支持自定义模板共享。

技术选型

统一在最新稳定版本上,避免技术债。后端 Java 17 + Spring Boot 3,前端 Vue 3 + Vite。

后端

Java 17
运行时(LTS)
Spring Boot 3.4
应用框架
Spring Security 6
认证鉴权
MyBatis-Plus 3.5
ORM + 拦截器
Flyway
数据库迁移
Aviator 5
表达式引擎
Caffeine
L1 本地缓存
Redis 7
L2 分布式缓存
Redisson
分布式锁 / 限流
Jackson
JSON 序列化
SpringDoc
OpenAPI 文档
MySQL 8
主存储

前端

Vue 3.5
UI 框架
TypeScript 5
类型安全
Vite 6
构建工具
Ant Design Vue 4
UI 组件库
Pinia
状态管理
Vue Flow
DAG 编辑器
ECharts
监控大盘
Monaco Editor
脚本编辑器

基础设施

Docker
容器化
Docker Compose
本地编排
Kubernetes
生产编排(企业版)
Nginx
网关 / 反代

设计原则

所有模块共同遵守的工程约束。

🔒

多租户隔离最高优先级

需要隔离的表必须有 tenant_id,通过 TenantLineInnerInterceptor 自动注入 WHERE 条件。继承 TenantBasePO,唯一键用 uk_tenant_id_code。

📐

PO 基类规范

主表用 TenantBasePO;子表/明细表用 BasePO 并加入 IGNORE_TABLES, 通过外键关联父表隔离,避免重复注入 tenant_id。

🔄

Flyway 强制迁移

所有 DDL 变更通过 V{n}__{desc}.sql 管理,版本号严格递增。 表必须包含 id、create_time、update_time、is_deleted 字段。

📡

缓存失效同步

Admin 端修改后通过 Redis Pub/Sub 通知所有 Engine 节点清理 Caffeine 缓存, 条件 Bean 必须用 @Configuration + @Bean。

🧪

编译即验证

每个阶段完成后执行 mvn compile;前端执行 npm run build (含 vue-tsc 类型检查),保证主分支始终可构建。

📝

统一响应规范

所有 Controller 返回 R<T>,分页用 PageResult<T>。 用户上下文统一通过 SecurityContextHolder 获取。

想深入了解架构?

项目内置 120 份中文 wiki 文档(.qoder/repowiki/zh/content/), 覆盖模块设计、数据模型、API 参考与扩展指南。