docs: 更新 README,补充 Java 客户端模块、修正 API 路由和配置说明
This commit is contained in:
@@ -1,47 +1,64 @@
|
|||||||
# Kenaito Config Center
|
# Kenaito Config Center
|
||||||
|
|
||||||
基于 Go 重构的配置中心。
|
基于 Go 重构的集中配置管理平台,支持多应用、多环境、多业务组的配置管理与分发。
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
|
|
||||||
- **后端**: Go + Gin + xorm + MySQL
|
- **后端**: Go + Gin + xorm + MySQL
|
||||||
- **前端**: Vue 2 + Vite 5 + Element UI 2
|
- **前端**: Vue 2 + Vite 5 + Element UI 2
|
||||||
- **客户端**: Go(Java 客户端保留兼容)
|
- **客户端**: Go / Java(Spring Boot 2.x & 3.x)
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|
||||||
```
|
```
|
||||||
kenaito-conf/
|
kenaito-conf/
|
||||||
├── server/ # Go 管理端
|
├── server/ # Go 管理端(Gin + xorm)
|
||||||
├── web/ # Vue 前端
|
├── web/ # Vue 2 前端
|
||||||
├── go-client/ # Go 客户端
|
├── go-client/ # Go 客户端 SDK
|
||||||
├── java-springboot-client/ # Java Spring Boot 客户端
|
├── kenaito-conf-springboot2-client/ # Java Spring Boot 2.x 客户端 SDK(JDK 8+)
|
||||||
└── sql/ # 数据库脚本
|
├── kenaito-conf-springboot2-client-demo/# Spring Boot 2.x 客户端示例(端口 8081)
|
||||||
|
├── kenaito-conf-springboot3-client/ # Java Spring Boot 3 客户端 SDK(JDK 11+,预留升级路径)
|
||||||
|
└── kenaito-conf-springboot3-client-demo/# Spring Boot 3 客户端示例(端口 8082,需 JDK 17+)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 快速开始
|
## 快速开始
|
||||||
|
|
||||||
### 1. 初始化数据库
|
### 1. 启动后端
|
||||||
|
|
||||||
```bash
|
|
||||||
mysql -u root -p configcenter < sql/init.sql
|
|
||||||
mysql -u root -p configcenter < sql/testdata.sql # 测试数据
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 启动后端
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd server
|
cd server
|
||||||
# 修改 config.yaml 中的数据库配置
|
```
|
||||||
go run cmd/main.go
|
|
||||||
|
编辑 `application.properties` 设置 `active` 环境,编辑 `application-{active}.properties` 配置数据库连接等信息:
|
||||||
|
|
||||||
|
```properties
|
||||||
|
# application.properties
|
||||||
|
active=dev
|
||||||
|
|
||||||
|
# application-dev.properties
|
||||||
|
server.port=8080
|
||||||
|
database.host=127.0.0.1
|
||||||
|
database.port=3306
|
||||||
|
database.name=kenaito_conf
|
||||||
|
database.user=root
|
||||||
|
database.password=your_password
|
||||||
|
jwt.secret=your-jwt-secret
|
||||||
|
jwt.expireHours=24
|
||||||
|
crypto.secretKey=your-crypto-key
|
||||||
|
```
|
||||||
|
|
||||||
|
启动服务(首次启动自动建表并初始化默认数据):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go run cmd/main.go -config application.properties
|
||||||
# 或编译后运行
|
# 或编译后运行
|
||||||
go build -o bin/server cmd/main.go
|
go build -o bin/server cmd/main.go
|
||||||
./bin/server -config config.yaml
|
./bin/server -config application.properties
|
||||||
```
|
```
|
||||||
|
|
||||||
后端默认监听 `:8080`。
|
后端默认监听 `:8080`。
|
||||||
|
|
||||||
### 3. 启动前端
|
### 2. 启动前端
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd web
|
cd web
|
||||||
@@ -51,13 +68,15 @@ npm run dev
|
|||||||
|
|
||||||
前端默认监听 `:3000`,自动代理 API 到后端。
|
前端默认监听 `:3000`,自动代理 API 到后端。
|
||||||
|
|
||||||
### 4. 访问
|
### 3. 访问
|
||||||
|
|
||||||
打开 http://localhost:3000
|
打开 http://localhost:3000
|
||||||
|
|
||||||
默认管理员账号:`admin` / 密码为 BCrypt 哈希对应的原始密码(见 testdata.sql)
|
默认管理员账号:`admin` / 密码:`admin123`
|
||||||
|
|
||||||
## Go 客户端使用
|
## 客户端接入
|
||||||
|
|
||||||
|
### Go 客户端
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "kenaito-conf/go-client"
|
import "kenaito-conf/go-client"
|
||||||
@@ -67,6 +86,7 @@ cfg := &client.Config{
|
|||||||
AppName: "myapp",
|
AppName: "myapp",
|
||||||
Env: "dev",
|
Env: "dev",
|
||||||
Version: "latest",
|
Version: "latest",
|
||||||
|
Token: "app-token",
|
||||||
SyncInterval: 30,
|
SyncInterval: 30,
|
||||||
CacheDir: ".",
|
CacheDir: ".",
|
||||||
}
|
}
|
||||||
@@ -88,41 +108,119 @@ defer c.Stop()
|
|||||||
dbHost := c.Get("db.host")
|
dbHost := c.Get("db.host")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Java Spring Boot 2.x 客户端
|
||||||
|
|
||||||
|
适用于 JDK 8+、Spring Boot 2.x 项目。
|
||||||
|
|
||||||
|
**1. 引入依赖**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.odboy</groupId>
|
||||||
|
<artifactId>kenaito-conf-springboot2-client</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. 添加配置**(`application.properties`)
|
||||||
|
|
||||||
|
```properties
|
||||||
|
kenaito.config.baseUrl=http://localhost:8080
|
||||||
|
kenaito.config.appName=myapp
|
||||||
|
kenaito.config.profile=dev
|
||||||
|
kenaito.config.version=latest
|
||||||
|
kenaito.config.token=app-token
|
||||||
|
kenaito.config.sync-interval-seconds=30
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. 使用配置**
|
||||||
|
|
||||||
|
```java
|
||||||
|
@Value("${your.config.key}")
|
||||||
|
private String configValue;
|
||||||
|
```
|
||||||
|
|
||||||
|
远程配置会自动注入到 Spring Environment 中,通过 `@Value` 即可读取。
|
||||||
|
|
||||||
|
### Java Spring Boot 3 客户端
|
||||||
|
|
||||||
|
适用于 JDK 11+ 项目(当前编译目标 Spring Boot 2.7.18,预留 Spring Boot 3 升级路径)。
|
||||||
|
|
||||||
|
**1. 引入依赖**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.odboy</groupId>
|
||||||
|
<artifactId>kenaito-conf-springboot3-client</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. 配置与使用方式同 Spring Boot 2.x 客户端。**
|
||||||
|
|
||||||
|
> **注意:** 升级到 Spring Boot 3 需先将编译目标改为 JDK 17,并更新 `spring-boot.version` 为 3.x、Spring Framework 为 6.x。
|
||||||
|
|
||||||
## API 概览
|
## API 概览
|
||||||
|
|
||||||
### 管理端 API(需 JWT 认证)
|
### 管理端 API(需 JWT 认证)
|
||||||
|
|
||||||
| 方法 | 路径 | 说明 |
|
| 方法 | 路径 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| POST | /user/login | 登录 |
|
| POST | `/user/login` | 登录 |
|
||||||
| GET | /user/login_user_info | 当前用户信息 |
|
| GET | `/user/loginUserInfo` | 当前用户信息 |
|
||||||
| GET | /admin/menus | 菜单 |
|
| POST | `/user/logout` | 登出 |
|
||||||
| POST | /admin/config/list | 配置列表 |
|
| GET | `/admin/menus` | 菜单 |
|
||||||
| POST | /admin/config/add | 新增配置 |
|
| POST | `/admin/config/list` | 配置列表 |
|
||||||
| POST | /admin/config/update | 更新配置 |
|
| POST | `/admin/config/add` | 新增配置 |
|
||||||
| GET | /admin/config/:id | 配置详情 |
|
| POST | `/admin/config/update` | 更新配置 |
|
||||||
| POST | /admin/config/delete/:id | 删除配置 |
|
| GET | `/admin/config/:id` | 配置详情 |
|
||||||
| GET | /admin/config/config_histories/:id | 配置历史 |
|
| POST | `/admin/config/delete/:id` | 删除配置 |
|
||||||
| GET | /admin/config/rollback/:id | 回滚配置 |
|
| GET | `/admin/config/configHistories/:id` | 配置历史 |
|
||||||
| POST | /admin/app/list | 应用列表 |
|
| POST | `/admin/config/rollback/:id` | 回滚配置 |
|
||||||
| POST | /admin/app/add | 新增应用 |
|
| POST | `/admin/app/list` | 应用列表 |
|
||||||
| GET | /admin/app/tree | 应用树 |
|
| POST | `/admin/app/add` | 新增应用 |
|
||||||
| GET | /admin/user/list | 用户列表 |
|
| POST | `/admin/app/update` | 更新应用 |
|
||||||
| POST | /admin/user/add | 新增用户 |
|
| POST | `/admin/app/delete/:id` | 删除应用 |
|
||||||
| GET | /admin/group/list | 业务组列表 |
|
| POST | `/admin/app/switch/:id` | 切换应用状态 |
|
||||||
| GET | /admin/profile/list | 环境列表 |
|
| GET | `/admin/app/tree` | 应用树 |
|
||||||
|
| GET | `/admin/app/options` | 应用选项 |
|
||||||
|
| GET | `/admin/user/list` | 用户列表 |
|
||||||
|
| POST | `/admin/user/add` | 新增用户 |
|
||||||
|
| POST | `/admin/user/update` | 更新用户 |
|
||||||
|
| POST | `/admin/user/delete/:id` | 删除用户 |
|
||||||
|
| POST | `/admin/user/resetPassword/:id` | 重置密码 |
|
||||||
|
| POST | `/admin/user/switch/:id` | 切换用户状态 |
|
||||||
|
| GET | `/admin/group/list` | 业务组列表 |
|
||||||
|
| POST | `/admin/group/add` | 新增业务组 |
|
||||||
|
| POST | `/admin/group/update` | 更新业务组 |
|
||||||
|
| GET | `/admin/group/options` | 业务组选项 |
|
||||||
|
| GET | `/admin/profile/list` | 环境列表 |
|
||||||
|
| POST | `/admin/profile/add` | 新增环境 |
|
||||||
|
| POST | `/admin/profile/update` | 更新环境 |
|
||||||
|
| POST | `/admin/profile/delete/:id` | 删除环境 |
|
||||||
|
| POST | `/admin/profile/switch/:id` | 切换环境状态 |
|
||||||
|
| GET | `/admin/profile/options` | 环境选项 |
|
||||||
|
|
||||||
### 客户端 API(无需 JWT)
|
### 客户端 API(无需 JWT)
|
||||||
|
|
||||||
| 方法 | 路径 | 说明 |
|
| 方法 | 路径 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| GET | /api/fetch_all_configs | 全量拉取配置 |
|
| GET | `/api/fetchAllConfigs` | 全量拉取配置 |
|
||||||
| POST | /api/fetch_changed_configs | 增量拉取变更 |
|
| POST | `/api/fetchChangedConfigs` | 增量拉取变更 |
|
||||||
| GET | /api/ping | 健康检查 |
|
| GET | `/api/ping` | 健康检查 |
|
||||||
|
|
||||||
|
## 加密说明
|
||||||
|
|
||||||
|
配置值支持 AES 加密存储(`{Cipher}xxx` 格式),客户端自动解密:
|
||||||
|
|
||||||
|
- **算法**: AES-128/CBC/ZeroIV + PKCS7 填充
|
||||||
|
- **密钥派生**: `MD5(secretKey + appId_hex + env)` 取后 16 字节
|
||||||
|
- Go 客户端和 Java 客户端使用相同的加密方案,确保跨语言兼容
|
||||||
|
|
||||||
## 与原 Java 版的差异
|
## 与原 Java 版的差异
|
||||||
|
|
||||||
- **去掉了 ZooKeeper**:配置变更通知改为客户端定时轮询
|
- **去掉了 ZooKeeper**:配置变更通知改为客户端定时轮询
|
||||||
- **认证方式**:管理端用 JWT,客户端 API 暂开放(可后续加签名验证)
|
- **认证方式**:管理端用 JWT,客户端 API 通过 Token 鉴权
|
||||||
- **前端**:从 layui 静态页面改为 Vue 2 + Element UI 前后端分离
|
- **前端**:从 layui 静态页面改为 Vue 2 + Element UI 前后端分离
|
||||||
- **加密算法**:保持 AES 兼容,Java 客户端可继续使用
|
- **加密算法**:保持 AES 兼容,Java 客户端可继续使用
|
||||||
|
- **自动建表**:服务端启动时通过 xorm Sync2 自动创建表结构,无需手动执行 SQL
|
||||||
|
|||||||
Reference in New Issue
Block a user