odboy baaec4c4b3 feat(config): 添加配置历史版本内容查看功能
- 新增历史版本内容弹窗,支持查看配置详细内容
- JSON类型内容自动格式化为易读格式
- 操作时间使用formatTime方法格式化为可读格式
- 新增getTypeName方法展示配置类型名称
- 历史弹窗宽度从700px调整为900px以适配新内容
- 更新开发环境数据库连接配置
2026-01-29 21:01:28 +08:00
2026-01-26 21:13:51 +08:00
2026-01-14 21:02:13 +08:00

Kenaito Config Center

基于 Go 重构的集中配置管理平台,支持多应用、多环境、多业务组的配置管理与分发。

技术栈

  • 后端: Go + Gin + xorm + MySQL
  • 前端: Vue 2 + Vite 5 + Element UI 2
  • 客户端: Go / Java(Spring Boot 2.x & 3.x)

项目结构

kenaito-conf/
├── server/                              # Go 管理端(Gin + xorm)
├── web/                                 # Vue 2 前端
├── go-client/                           # Go 客户端 SDK
├── kenaito-conf-springboot2-client/     # Java Spring Boot 2.x 客户端 SDK(JDK 8+)
├── 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. 启动后端

cd server

编辑 application.properties 设置 active 环境,编辑 application-{active}.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

启动服务(首次启动自动建表并初始化默认数据):

go run cmd/main.go -config application.properties
# 或编译后运行
go build -o bin/server cmd/main.go
./bin/server -config application.properties

后端默认监听 :8080。

2. 启动前端

cd web
npm install
npm run dev

前端默认监听 :3000,自动代理 API 到后端。

3. 访问

打开 http://localhost:3000

默认管理员账号:admin / 密码:admin123

客户端接入

Go 客户端

import "kenaito-conf/go-client"

cfg := &client.Config{
    BaseURL:      "http://localhost:8080",
    AppName:      "myapp",
    Env:          "dev",
    Version:      "latest",
    Token:        "app-token",
    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")

Java Spring Boot 2.x 客户端

适用于 JDK 8+、Spring Boot 2.x 项目。

1. 引入依赖

<dependency>
    <groupId>cn.odboy</groupId>
    <artifactId>kenaito-conf-springboot2-client</artifactId>
    <version>1.0.0</version>
</dependency>

2. 添加配置(application.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. 使用配置

@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. 引入依赖

<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(需 JWT 认证)

方法 路径 说明
POST /user/login 登录
GET /user/loginUserInfo 当前用户信息
POST /user/logout 登出
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/configHistories/:id 配置历史
POST /admin/config/rollback/:id 回滚配置
POST /admin/app/list 应用列表
POST /admin/app/add 新增应用
POST /admin/app/update 更新应用
POST /admin/app/delete/:id 删除应用
POST /admin/app/switch/:id 切换应用状态
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)

方法 路径 说明
GET /api/fetchAllConfigs 全量拉取配置
POST /api/fetchChangedConfigs 增量拉取变更
GET /api/ping 健康检查

加密说明

配置值支持 AES 加密存储({Cipher}xxx 格式),客户端自动解密:

  • 算法: AES-128/CBC/ZeroIV + PKCS7 填充
  • 密钥派生: MD5(secretKey + appId_hex + env) 取后 16 字节
  • Go 客户端和 Java 客户端使用相同的加密方案,确保跨语言兼容

与原 Java 版的差异

  • 去掉了 ZooKeeper:配置变更通知改为客户端定时轮询
  • 认证方式:管理端用 JWT,客户端 API 通过 Token 鉴权
  • 前端:从 layui 静态页面改为 Vue 2 + Element UI 前后端分离
  • 加密算法:保持 AES 兼容,Java 客户端可继续使用
  • 自动建表:服务端启动时通过 xorm Sync2 自动创建表结构,无需手动执行 SQL
S
Description
基于 Go 的集中配置管理平台,支持多应用、多环境、多业务组的配置管理与实时分发,提供多种语言客户端 SDK
Readme Apache-2.0
722 KiB
Languages
Go 26.9%
Java 22.4%
Vue 19.8%
JavaScript 3.6%
C++ 3.5%
Other 23.7%