ZeroApplication配置采用NetCore建议的配置方式,以Json文件为主。应用配置文件为部署目录下的appsettings.json,全局配置文件为配置目录(/usr/config)下的zero.json文件
appsettings.json
{
"ASPNETCORE_ENVIRONMENT_": "Development",
"urls": "http://*:8080",
"AppName": "Demo",
"Zero": {
"Demo": {
/*Station名称*/
"StationName": "test",
/*独立的数据与日志目录*/
"StationIsolate":true,
/*限速模式(Single 单线程 ThreadCount 按线程数限制 WaitCount 按等待数限制)*/
"SpeedLimitModel": "ThreadCount",
/*最大等待数-WaitCount模式有效*/
"MaxWait": 512,
/*最大Task与Cpu核心数的倍数关系-ThreadCount模式有效 */
"TaskCpuMultiple": 0.1
}
}
}
zero.json
{
"Zero": {
"Global": {
/*ZeroCenter主机IP地址或域名*/
"ZeroAddress": "192.168.240.132",
/*ZeroCenter管理端口号*/
"ZeroManagePort": 8000,
/*ZeroCenter监测端口号*/
"ZeroMonitorPort": 8001,
/*服务器安全令牌*/
"ServiceKey": "77E6A88F"
}
}
}
1 顶级配置项
1.1. ASPNETCORE_ENVIRONMENT_
aspnet.core相同配置
Development
- 根目录为应用程序部署目录
取Environment.CurrentDirectory值而后会赋配置值 rootPath
- 不合并zero.json全局配置文件
- datas,logs也在应用程序文件夹下
Procuction
事实上只要是非Development即为生产配置
- 根目录遵行部署规范,根目录在应用程序部署的上一级目录,即部署根目录
取Environment.CurrentDirectory值的上一级目录而后会赋配置值 rootPath
- 合并zero.json全局配置文件
合并项为appsettings.json中的缺失项,即zero.json中的Zero.Global配置项会填充到应用的Zero.[AppName]配置
- datas,logs在部署根目录对应文件夹下
1.2. AppName
应用名称,必须配置。否则运行时将抛出“无法找到配置[AppName],请在appsettings.json中设置”的异常
1.3. urls
仅用于Asp.net类型项目,如"http://*:8080",用于定义新的Http端口号
2 Zero节
2.1 Global节
在zero.json中使用,如用在appsettings.json会造成混乱.
2.2 [AppName]节
具体App的配置
如不存在,会完全使用zero.json中的Zero.Global节的配置,此时StationName与AppName相同
说明
- 由于使用AppName作为节,也可以使用zero.json一个配置文件进行详细配置,应用程序的appsettings.json中配置顶级配置项即可.
- Global节的数据结构与[AppName]节完全相同
基础配置项
作用于整个ZeroApplication的配置
名称 | 类型 | 必填 | 说明 | 默认值 | 范围 |
---|---|---|---|---|---|
ZeroAddress | String | 否 | ZeroCenter主机的IP地址或域名 | 127.0.0.1 | 域名不需要任何前缀 |
ZeroManagePort | Number | 否 | ZeroCenter的SystemManage服务的端口号 | 8000 | 1025-65000 |
ZeroMonitorPort | Number | 否 | ZeroCenter的ZeroMonitor服务的端口号 | 8001 | 1025-65000 |
ServiceKey | String | 是 | ZeroCenter的安全校验令牌 | ||
LocalIpAddress | String | 否 | 本地的真实IP地址 | 通过Dns.GetHostAddresses取得 | Dns.GetHostAddresses取得的IP有可能不是准确的,为正确进行跟踪记录,故开放为配置项 |
DataFolder | String | 否 | 本地数据目录 | 见后续表格 | |
LogFolder | String | 否 | 本地日志目录 | 见后续表格 | 会使LogRecorder配置无效 |
ConfigFolder | String | 否 | 本地配置目录 | 见后续表格 | |
StationIsolate | Boolean | 否 | 站点独立目录 | false | true/false |
特殊文件夹在缺省状态因StationIsolate配置产生的变化
类型 | false | true | 说明 |
---|---|---|---|
本地日志 | /usr/zero/logs | /usr/zero/logs/demo | |
本地数据 | /usr/zero/datas | /usr/zero/datas/demo | |
本地配置 | /usr/zero/config | /usr/zero/config/demo | 本文件描述的配置文件不受此影响 |
站点配置项
作用于ZeroStation的配置,如果需要,每一个ZeroStation使用StationName为节点可单独配置
名称 | 类型 | 必填 | 说明 | 默认值 | 范围 |
---|---|---|---|---|---|
StationName | String | 否 | Station的名称 | 与AppName相同 | |
ShortName | String | 否 | Station的简称 | 与StationName相同 | |
SpeedLimitModel | String | 否 | ApiStation或QueueStation的多线程模式 | ||
TaskCpuMultiple | Number | 否 | 线程数与Cpu核数的比例关系 | 1 | 0.01-128 |
MaxWait | Number | 否 | 最大允许同时执行的任务数 | 0xFF | 0xFF-0xFFFFF |
SpeedLimitModel中配置项的不同
值 | 说明 | TaskCpuMultiple | MaxWait | 侦听线程 | 处理线程 | 处理顺序 |
---|---|---|---|---|---|---|
Single | 单线程 | 无效 | 无效 | 1 | 1 | 有序 |
ThreadCount | 多线程 | 线程数=配置值×CPU数量 | 无效 | 多 | 多 | 无序 |
WaitCount | 多任务 | 无效 | 最大任务数量,超出时返回拒绝服务 | 1 | 多 | 无序 |
- ApiStation默认为ThreadCount
- QueueStation默认为Single