File size: 6,629 Bytes
6fefda3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
# 统一配置系统说明
JetBrains AI Proxy现在采用了全新的统一配置系统,实现了自动配置发现、多种配置方式支持和配置热重载等功能。
## 🏗️ 系统架构
### 核心组件
1. **ConfigManager** (`internal/config/config.go`)
- 统一的配置管理器
- 支持多种配置源的合并
- 线程安全的配置访问
- 配置验证和默认值处理
2. **ConfigDiscovery** (`internal/config/discovery.go`)
- 自动配置文件发现
- 配置文件格式验证
- 配置文件监控和热重载
- 示例配置生成
3. **JWTBalancer** (`internal/balancer/jwt_balancer.go`)
- JWT负载均衡器
- 支持轮询和随机策略
- 并发安全的token管理
- 动态token更新
4. **HealthChecker** (`internal/balancer/health_checker.go`)
- JWT健康检查器
- 自动故障检测和恢复
- 可配置的检查间隔
- 并发健康检查
## 📁 文件结构
```
jetbrains-ai-proxy/
├── main.go # 主程序,支持新配置系统
├── start.sh # 智能启动脚本
├── CONFIGURATION_SYSTEM.md # 配置系统说明(本文件)
├── MULTI_JWT_README.md # 多JWT功能说明
├── internal/
│ ├── config/
│ │ ├── config.go # 配置管理器
│ │ └── discovery.go # 配置发现器
│ ├── balancer/
│ │ ├── jwt_balancer.go # JWT负载均衡器
│ │ ├── health_checker.go # 健康检查器
│ │ └── jwt_balancer_test.go # 测试用例
│ └── jetbrains/
│ └── client.go # 集成配置系统的客户端
└── examples/
├── complete_example.md # 完整使用示例
├── start_with_multiple_jwt.sh # 多JWT启动脚本
└── .env.example # 环境变量示例
```
## ⚙️ 配置优先级
系统按以下优先级加载和合并配置:
1. **命令行参数** (最高优先级)
2. **环境变量**
3. **配置文件**
4. **默认值** (最低优先级)
## 🔍 配置发现机制
系统会按以下顺序搜索配置文件:
1. `CONFIG_FILE` 环境变量指定的路径
2. 当前目录:`config.json`, `jetbrains-ai-proxy.json`
3. config目录:`config/config.json`, `configs/config.json`
4. 隐藏目录:`.config/config.json`
5. 用户主目录:`$HOME/.config/jetbrains-ai-proxy/config.json`
6. 系统目录:`/etc/jetbrains-ai-proxy/config.json`
如果没有找到配置文件,系统会自动生成示例配置。
## 🚀 使用方式
### 1. 自动配置(推荐)
```bash
# 生成示例配置
./jetbrains-ai-proxy --generate-config
# 编辑配置文件
vim config/config.json
# 启动服务(自动发现配置)
./jetbrains-ai-proxy
```
### 2. 使用启动脚本
```bash
# 智能启动(自动检查配置)
./start.sh
# 生成配置
./start.sh --generate
# 查看配置
./start.sh --config
```
### 3. 指定配置文件
```bash
# 使用特定配置文件
./jetbrains-ai-proxy --config /path/to/config.json
# 或设置环境变量
export CONFIG_FILE=/path/to/config.json
./jetbrains-ai-proxy
```
## 📋 配置文件格式
### JSON配置文件示例
```json
{
"jetbrains_tokens": [
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"name": "Primary_JWT",
"description": "Primary JWT token for JetBrains AI",
"priority": 1,
"metadata": {
"environment": "production",
"region": "us-east-1"
}
}
],
"bearer_token": "your_bearer_token_here",
"load_balance_strategy": "round_robin",
"health_check_interval": "30s",
"server_port": 8080,
"server_host": "0.0.0.0"
}
```
### 环境变量配置
```bash
# JWT Tokens(逗号分隔)
JWT_TOKENS=token1,token2,token3
# Bearer Token
BEARER_TOKEN=your_bearer_token
# 负载均衡策略
LOAD_BALANCE_STRATEGY=round_robin
# 服务器配置
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
# 配置文件路径(可选)
CONFIG_FILE=config/config.json
```
## 🔄 配置热重载
系统支持运行时配置重载,无需重启服务:
### 自动重载
配置文件监控器会自动检测配置文件变化并重新加载。
### 手动重载
```bash
# 通过API端点重载
curl -X POST http://localhost:8080/reload
# 响应
{
"message": "Configuration reloaded successfully"
}
```
## 🛠️ 管理端点
系统提供了丰富的管理端点:
| 端点 | 方法 | 描述 |
|------|------|------|
| `/health` | GET | 健康检查和负载均衡状态 |
| `/config` | GET | 当前配置信息(隐藏敏感数据) |
| `/stats` | GET | 详细统计信息 |
| `/reload` | POST | 重新加载配置 |
## 🔧 高级功能
### 1. JWT Token元数据
支持为每个JWT token配置元数据:
```json
{
"token": "jwt_token_here",
"name": "Production_Primary",
"description": "Primary production JWT token",
"priority": 1,
"metadata": {
"environment": "production",
"region": "us-east-1",
"tier": "primary",
"max_requests_per_minute": "1000"
}
}
```
### 2. 配置验证
系统会自动验证配置的有效性:
- JWT token格式检查
- 必需字段验证
- 数值范围检查
- 策略有效性验证
### 3. 配置合并策略
多个配置源的合并规则:
- 数组类型:高优先级完全覆盖低优先级
- 对象类型:递归合并,高优先级字段覆盖低优先级
- 基本类型:高优先级直接覆盖低优先级
## 🚨 故障排除
### 配置问题诊断
```bash
# 查看当前配置
./jetbrains-ai-proxy --print-config
# 验证配置文件
./jetbrains-ai-proxy --config config.json --print-config
# 生成新的示例配置
./jetbrains-ai-proxy --generate-config
```
### 常见问题
1. **配置文件未找到**
- 检查文件路径和权限
- 使用 `--generate-config` 生成示例配置
2. **JWT tokens无效**
- 检查token格式和有效性
- 查看健康检查日志
3. **配置合并问题**
- 使用 `--print-config` 查看最终配置
- 检查配置优先级
## 📈 性能考虑
1. **配置缓存**: 配置在内存中缓存,避免重复读取
2. **并发安全**: 使用读写锁保护配置访问
3. **懒加载**: 配置发现器按需加载配置文件
4. **监控优化**: 配置文件监控使用高效的文件系统事件
## 🔮 未来扩展
系统设计支持以下扩展:
- 远程配置中心集成(如Consul、etcd)
- 配置加密和安全存储
- 配置版本管理和回滚
- 更多负载均衡策略
- 动态配置更新API
|