@emac
2016-11-13T21:56:12.000000Z
字数 1982
阅读 6761
版本:1.0
架构
随着用户规模的不断扩大和新需求的不断提出,应用的业务逻辑越来越复杂,对性能和可靠性的要求也越来越高。原本一个简单的单点应用逐步演变为一系列经垂直划分,横向扩展后的分布式应用集群。与之相应,如何有效管理分布式环境下各类应用的配置信息成为一个核心诉求。
按照配置的来源划分,主要有本地文件,数据库和远程调用。按照配置的可变性划分,可分为只读型配置和可写型配置。按照配置的读取频率,可分为单次读取型配置和动态读取型配置。
模块说明:
应用版本正则:[0-9]+.[0-9]+.[0-9]+(-[-0-9a-zA-Z]+)?
配置版本正则:[0-9]+.[0-9]+.[0-9]+
版本匹配规则:截取应用版本的前三段数字"[0-9]+.[0-9]+.[0-9]+"与配置版本比较,应用版本的后缀部分"(-[0-9a-zA-Z-]+)?"不加入比较
给定一个应用和运行环境,系统中最多可出现一个全部版本A,可出现多个具体版本范围R1, R2, R3...,对应的最低版本分别标为min1, min2, min3...,最高版本标为max1, max2, max3...:
规则:给定一个应用版本,最多只能匹配1个具体版本范围RN,如果找不到,则再匹配全部版本A(如果存在)。
由此可推导出如下校验规则:
将所有R按min排序后,平铺min/max,得到min1,max1,min2,max2,...,
返回
{
success: true,
token: <调用授权API所需的token>,
userId: <用户id>
}
token的有效期为1小时,调用授权API时,和userId一起作为header传递,对应的header名称分别为XRToken,XRUserId
/api/login
返回
{
success: true,
files: <文件配置数组>
}
文件配置JSON对象格式:
{
"id": <文件id>
"name": <文件名>,
"path": <文件存放路径,相对于应用根目录>,
"url": <下载url>
}
/api/files
返回
<文件内容>
/api/file/<id>
返回
{
success: true,
configs: <键值配置数组>
}
键值配置JSON对象格式
{
"key": <键>,
"value": <值>,
"typ": <值类型。0:字符串 1:整型 2:浮点型 3:布尔值 4:JSON>
}
/api/configs
返回
{
success: true,
config: <键值配置对象>
}
/api/config/<key>