129 lines
3.1 KiB
Markdown
129 lines
3.1 KiB
Markdown
# Kenaito Config Center
|
||
|
||
基于 Go 重构的配置中心。
|
||
|
||
## 技术栈
|
||
|
||
- **后端**: Go + Gin + xorm + MySQL
|
||
- **前端**: Vue 2 + Vite 5 + Element UI 2
|
||
- **客户端**: Go(Java 客户端保留兼容)
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
kenaito-conf/
|
||
├── server/ # Go 管理端
|
||
├── web/ # Vue 前端
|
||
├── go-client/ # Go 客户端
|
||
├── java-springboot-client/ # Java Spring Boot 客户端
|
||
└── sql/ # 数据库脚本
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 1. 初始化数据库
|
||
|
||
```bash
|
||
mysql -u root -p configcenter < sql/init.sql
|
||
mysql -u root -p configcenter < sql/testdata.sql # 测试数据
|
||
```
|
||
|
||
### 2. 启动后端
|
||
|
||
```bash
|
||
cd server
|
||
# 修改 config.yaml 中的数据库配置
|
||
go run cmd/main.go
|
||
# 或编译后运行
|
||
go build -o bin/server cmd/main.go
|
||
./bin/server -config config.yaml
|
||
```
|
||
|
||
后端默认监听 `:8080`。
|
||
|
||
### 3. 启动前端
|
||
|
||
```bash
|
||
cd web
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
前端默认监听 `:3000`,自动代理 API 到后端。
|
||
|
||
### 4. 访问
|
||
|
||
打开 http://localhost:3000
|
||
|
||
默认管理员账号:`admin` / 密码为 BCrypt 哈希对应的原始密码(见 testdata.sql)
|
||
|
||
## Go 客户端使用
|
||
|
||
```go
|
||
import "kenaito-conf/go-client"
|
||
|
||
cfg := &client.Config{
|
||
BaseURL: "http://localhost:8080",
|
||
AppName: "myapp",
|
||
Env: "dev",
|
||
Version: "latest",
|
||
SyncInterval: 30,
|
||
CacheDir: ".",
|
||
}
|
||
|
||
c := client.New(cfg)
|
||
|
||
// 注册变更回调
|
||
c.OnChange(func(changed map[string]string) {
|
||
for k, v := range changed {
|
||
fmt.Printf("%s = %s\n", k, v)
|
||
}
|
||
})
|
||
|
||
// 启动(拉取全量配置 + 开启定时同步)
|
||
c.Start()
|
||
defer c.Stop()
|
||
|
||
// 读取配置
|
||
dbHost := c.Get("db.host")
|
||
```
|
||
|
||
## API 概览
|
||
|
||
### 管理端 API(需 JWT 认证)
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | /user/login | 登录 |
|
||
| GET | /user/login_user_info | 当前用户信息 |
|
||
| GET | /admin/menus | 菜单 |
|
||
| POST | /admin/config/list | 配置列表 |
|
||
| POST | /admin/config/add | 新增配置 |
|
||
| POST | /admin/config/update | 更新配置 |
|
||
| GET | /admin/config/:id | 配置详情 |
|
||
| POST | /admin/config/delete/:id | 删除配置 |
|
||
| GET | /admin/config/config_histories/:id | 配置历史 |
|
||
| GET | /admin/config/rollback/:id | 回滚配置 |
|
||
| POST | /admin/app/list | 应用列表 |
|
||
| POST | /admin/app/add | 新增应用 |
|
||
| GET | /admin/app/tree | 应用树 |
|
||
| GET | /admin/user/list | 用户列表 |
|
||
| POST | /admin/user/add | 新增用户 |
|
||
| GET | /admin/group/list | 业务组列表 |
|
||
| GET | /admin/profile/list | 环境列表 |
|
||
|
||
### 客户端 API(无需 JWT)
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | /api/fetch_all_configs | 全量拉取配置 |
|
||
| POST | /api/fetch_changed_configs | 增量拉取变更 |
|
||
| GET | /api/ping | 健康检查 |
|
||
|
||
## 与原 Java 版的差异
|
||
|
||
- **去掉了 ZooKeeper**:配置变更通知改为客户端定时轮询
|
||
- **认证方式**:管理端用 JWT,客户端 API 暂开放(可后续加签名验证)
|
||
- **前端**:从 layui 静态页面改为 Vue 2 + Element UI 前后端分离
|
||
- **加密算法**:保持 AES 兼容,Java 客户端可继续使用
|