Sentinel Dashboard — 流量哨兵控制台
Sentinel Dashboard 是一个流量哨兵控制台 ,用于管理和监控微服务的流量控制(限流)和熔断规则。采用 MySQL 作为配置存储,etcd 作为运行时规则推送目标。
服务模块管理 :按业务模块组织资源,批量管理规则
资源中心 :统一查看所有资源及其规则状态
规则管理 :流控规则、熔断规则的 CRUD 和发布
用户权限 :超级管理员、业务线管理员、普通成员三级权限
发布机制 :配置修改后发布到 etcd,Sentinel 客户端实时消费
版本管理 :规则版本快照与回滚
┌─────────────────────────────────────────────────┐
│ React + Ant Design 前端 │
│ 资源中心 | 模块管理 | 规则编辑 │
└──────────────────────┬──────────────────────────┘
│ HTTP
┌──────────────────────▼──────────────────────────┐
│ Go + Gin Web 框架 (Dashboard) │
│ 模块API | 资源API | 规则API | 发布API │
└──────┬───────────────────────────────┬──────────┘
│ 读写 │ 发布时
▼ ▼
┌──────────────┐ ┌──────────────┐
│ MySQL 9.2 │ │ etcd v3 │
│ (主存储) │ │ (发布目标) │
└──────────────┘ └──────────────┘
编辑配置 → 写入 MySQL
发布配置 → 从 MySQL 读取 → 写入 etcd
客户端消费 → 从 etcd 拉取规则 → 应用限流/熔断
语言 : Go 1.20
Web 框架 : Gin v1.9.1
MySQL 驱动 : go-sql-driver/mysql v1.8.1
etcd 客户端 : go.etcd.io/etcd/client/v3 v3.5.11
JSON : Sonic v1.10.2
日志 : Uber Zap v1.26.0
框架 : React 18 + TypeScript
构建工具 : Vite 8.0.0
UI 库 : Ant Design 6.x
路由 : React Router v6
HTTP 客户端 : Axios
主存储 : MySQL 9.2(127.0.0.1:3306)
发布目标 : etcd v3(127.0.0.1:2379)
sentinel-go-ext/
├── dashboard/ # 后端(全部代码在此)
│ ├── api/
│ │ ├── app/ # API handlers
│ │ │ ├── auth.go # 认证 API(登录/退出/SSO)
│ │ │ ├── auth_admin.go # 管理中心 API(超管)
│ │ │ ├── auth_line.go # 业务线管理 API(线管)
│ │ │ ├── group.go # 模块管理 API
│ │ │ ├── resource.go # 资源中心 API
│ │ │ ├── rule_flow.go # 流控规则 API
│ │ │ └── rule_circuitbreaker.go
│ │ └── base/ # 鉴权中间件、应用注册
│ ├── cmd/ # 命令行入口
│ ├── config/ # YAML 配置加载
│ ├── dao/ # MySQL DAO
│ ├── model/ # 数据模型
│ ├── service/ # 业务服务(认证、发布)
│ ├── source/ # etcd 连接
│ ├── sql/ # 数据库脚本
│ ├── util/ # 工具函数
│ └── install.go # 路由注册
├── frontend/ # 前端 React 应用
│ ├── src/
│ │ ├── pages/ # 页面组件
│ │ ├── context/ # React Context
│ │ └── App.tsx # 主应用 + 路由
│ └── dist/ # 构建输出
├── conf/
│ └── dashboard-settings.yaml
└── openspec/ # 设计文档
角色
标识
可见菜单
权限范围
超级管理员
super_admin
管理中心
全局(用户、业务线、应用、权限)
业务线管理员
line_admin
管理中心
自己管理的业务线和应用
普通成员
member
资源中心 + 服务模块
所属业务线的资源和模块
方法
路径
说明
POST
/api/auth/login
登录(email + password)
POST
/api/auth/logout
退出
GET
/api/auth/feishu
飞书 SSO 授权
GET
/api/auth/feishu/callback
飞书 SSO 回调
GET
/api/auth/me
当前用户信息
方法
路径
说明
GET
/api/groups
模块列表
POST
/api/groups
创建模块
GET
/api/groups/:id
模块详情
PUT
/api/groups/:id
编辑模块
DELETE
/api/groups/:id
删除模块
GET
/api/groups/:id/members
成员(资源)列表
POST
/api/groups/:id/members
添加资源到模块
DELETE
/api/groups/:id/members/:resource
从模块移除资源
方法
路径
说明
GET
/api/resources
资源列表
GET
/api/resource/:id/rules
资源规则详情
GET
/api/resource/:id
资源元数据
PUT
/api/resource/:id
变更模块
DELETE
/api/resource/:id
删除资源
方法
路径
说明
GET
/api/app/rule/flow/list
流控规则列表
POST
/api/app/rule/flow/update
创建/更新流控规则
POST
/api/app/rule/flow/del
删除流控规则
GET
/api/app/rule/circuitbreaker/list
熔断规则列表
POST
/api/app/rule/circuitbreaker/update
创建/更新熔断规则
POST
/api/app/rule/circuitbreaker/del
删除熔断规则
PUT
/api/resource/:id/flow/:rule_id/toggle
流控规则开关
PUT
/api/resource/:id/circuitbreaker/:rule_id/toggle
熔断规则开关
方法
路径
说明
POST
/api/publish
发布规则到 etcd
GET
/api/publish/records
发布记录
方法
路径
说明
GET
/api/versions
版本列表
GET
/api/versions/:id
版本详情
POST
/api/versions/:id/rollback
回滚到指定版本
方法
路径
说明
GET
/api/apps
应用列表(按业务线分组)
POST
/api/apps
创建应用
PUT
/api/apps/:app_id
更新应用
DELETE
/api/apps/:app_id
删除应用(软删除)
方法
路径
说明
POST
/api/permissions
授权用户权限
GET
/api/permissions
权限列表
DELETE
/api/permissions/:id
撤销权限
方法
路径
说明
GET
/api/admin/users
用户列表
GET
/api/admin/users/search
搜索用户
GET
/api/admin/lines
业务线列表
POST
/api/admin/lines
创建业务线
PUT
/api/admin/lines/:id
更新业务线
DELETE
/api/admin/lines/:id
删除业务线
POST
/api/admin/lines/:id/admins
添加业务线管理员
DELETE
/api/admin/lines/:id/admins/:user_id
移除业务线管理员
业务线管理员 API(/api/line-admin/*)
方法
路径
说明
GET
/api/line-admin/lines
我的业务线列表
PUT
/api/line-admin/lines/:id
更新业务线描述
GET
/api/line-admin/lines/:id/apps
业务线下的应用列表
POST
/api/line-admin/lines/:id/apps
在业务线下创建应用
PUT
/api/line-admin/lines/:id/apps/:app_id
更新应用
DELETE
/api/line-admin/lines/:id/apps/:app_id
删除应用
GET
/api/line-admin/lines/:id/members
业务线成员列表
POST
/api/line-admin/lines/:id/members
添加业务线成员
DELETE
/api/line-admin/lines/:id/members/:user_id
移除业务线成员
表名
说明
apps
etcd 数据源注册
groups
业务模块
resources
资源
flow_rules
流控规则
circuit_breaker_rules
熔断规则
publish_records
发布记录
publish_versions
版本快照
users
用户
business_lines
业务线
business_line_apps
业务线-应用关联
business_line_admins
业务线-管理员关联(多对多)
business_line_members
业务线-成员关联(多对多)
user_permissions
用户权限
user_audit_logs
审计日志
user_tokens
会话 Token
mysql -u root < dashboard/sql/schema.sql
Go 1.20+
MySQL 9.2(127.0.0.1:3306, root/空密码)
etcd v3(127.0.0.1:2379)
Node.js 18+(前端构建)
# 构建
go build -o bin/sentinel_dashboard dashboard/cmd/main.go
# 运行
./bin/sentinel_dashboard -c conf/dashboard-settings.yaml -p 6111
cd frontend && npm install && npm run build
Internal use only.