
radarbase/radar-app-configRADAR app config 是一个应用配置引擎,旨在提供按项目和条件的多作用域配置管理。该引擎能够合并不同层级(全局、项目、用户等)的配置,并根据优先级动态解析最终配置,未来可能与 RADAR AppServer 合并。
配置基于作用域解析,作用域按优先级从低到高排序,高优先级配置覆盖低优先级配置。若在某作用域中将变量显式设为 null,则会清除父作用域中的该变量。当前支持的作用域顺序(优先级从低到高):
global(全局默认,仅系统管理员可更新)project.{projectId}(项目级,仅项目管理员可更新)group.{groupId}(未实现)condition.{conditionId}(未实现)user.{userId}(用户级,仅项目管理员可更新)适用于需要根据不同项目、用户或条件动态调整应用配置的场景,例如:
yamlclientA: sendRate: 50 clientB: sendRate: 100
项目 A 的配置:
yamlclientB: plugins: A B collectRate: 15
yamlid: 1 name: SpecificUserAbcd expression: user.id == 'abcd1234...' config: clientB: plugins: B
用户 abcd1234... 使用 clientB 时,最终解析的配置为:
yamlplugins: B sendRate: 100 collectRate: 15
变量基于作用域解析,优先级从低到高为:global < project.{projectId} < group.{groupId}(未实现)< condition.{conditionId}(未实现)< user.{userId}。父作用域变量可被高优先级作用域覆盖,或通过显式设为 null 清除。
GET /clients --- HTTP 200 OK { "clients": [ {"clientId": "clientA"} ] }
GET /projects --- HTTP 200 OK { "projects": [ {"id": 1, "projectName": "projectA", "humanReadableProjectName": "Project A", "location": "乌得勒支, 荷兰", "organization": "The Hyve", "description": "我的项目计划。"} ] }
仅系统管理员可访问:
GET /global/config/{clientId} --- HTTP 200 OK { "clientId": "{clientId}", "scope": "global", "config": [ {"name": "plugins", "value": "A", "scope": "global"} ] }
仅系统管理员可访问:
POST /global/config/{clientId} { "config": [ {"name": "plugins", "value": "A"} ] } --- HTTP 200 OK { "clientId": "{clientId}", "scope": "global", "config": [ {"name": "plugins", "value": "A"} ] }
GET /projects/{projectId}/config/{clientId} --- HTTP 200 OK { "clientId": "{clientId}", "scope": "project.projectA", "config": [ {"name": "plugins", "value": "A B"} ], "defaults": [ {"name": "plugins", "value": "A", "scope": "global"} ] }
POST /projects/{projectId}/config/{clientId} { "config": [ {"name": "rate", "value": "1"}, {"name": "plugins", "value": "A B"} ] } --- HTTP 200 OK { "clientId": "{clientId}", "scope": "project.projectA", "config": [ {"name": "plugins", "value": "A B"}, {"name": "rate", "value": "1"} ], "defaults": [ {"name": "plugins", "value": "A", "scope": "global"} ] }
GET /projects/{projectId}/users/{userId}/config/{clientId} --- HTTP 200 OK { "clientId": "{clientId}", "scope": "user.userA", "config": [ {"name": "plugins", "value": "A B"} ], "defaults": [ {"name": "plugins", "value": "A B", "scope": "project.projectA"}, {"name": "rate", "value": "1", "scope": "project.projectA"} ] }
POST /projects/{projectId}/users/{userId}/config/{clientId} { "config": [ {"name": "rate", "value": "1"} ] } --- HTTP 200 OK { "clientId": "{clientId}", "scope": "user.userA", "config": [ {"name": "rate", "value": "1"} ], "defaults": [ {"name": "plugins", "value": "A B", "scope": "project.projectA"}, {"name": "rate", "value": "1", "scope": "project.projectA"} ] }
使用 docker-compose 启动服务栈:
bashdocker-compose up -d
停止服务栈:
bashdocker-compose down
http://localhost:8080/appconfig/api/http://localhost:8080/appconfig/loginhttp://localhost:8080/managementportal/oauth/authorizehttp://localhost:8080/managementportal/oauth/tokenappconfig_frontendadmin、密码 admin 登录并授权,获取访问令牌后即可调用 API。如需创建项目或用户,访问 ManagementPortal:http://localhost:8080/managementportal/,使用 admin/admin 登录后进行管理。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务