配置说明
平台配置可以通过环境变量和命令行参数单独修改。配置中心存储的配置为 JSON 格式,而服务使用的配置为 YAML 格式。
详细说明
App.RunMode
http server 可用的模式: debug release test。
App.PrintConfig
布尔值,是否打印服务配置项。
App.Swagger
布尔值,是否开启服务的接口文档。
App.EtcdConfig
etcd中配置的key信息,服务中配置。
App.Etcd
etcd连接配置,服务中配置。
Endpoints: 数组,连接地址
DialTimeout: 数字,连接创建的超时时间
Username: 用户名
Password: 密码
AutoSyncInterval: 设置更新集群成员列表的时间间隔
App.Server
Metadata: 对象,注册服务的配置,客户端过滤用
HTTP:
Host: 服务监听地址
Port: 服务监听端口
GRPC:
Host: 服务监听地址
Port: 服务监听端口
Timeout: 服务超时时间
Limit: 服务请求内容限制
App.Pprof
用于可视化和分析 Go 程序性能的工具。
Enable: 布尔值,是否开启工具服务
Prefix: 字符串,接口的前缀
Port: 数字,开启的端口
App.Grom
数据库连接配置信息。
Debug: 布尔值,是否开启调试
LogLevel: 数字,日志等级
DBType: 数据库类型,取值postgres mysql sqlite3 dm kingbase
MaxLifetime: 数字,数据库连接的最大存活时间
MaxOpenConns: 数字,最大连接数
MaxIdleConns: 数字,空闲连接数
Postgres: Postgres和人大金仓数据库配置
Host: 数据库地址
Port: 数据库端口
User: 数据库用户名
Password: 数据库密码
DBName: 数据库名字
SSLMode: SSL/TLS 加密级别
MySQL: MySQL 数据库配置
Host: 数据库地址
Port: 数据库端口
User: 数据库用户名
Password: 数据库密码
DBName: 数据库名字,默认为空
Parameters: 连接参数
DM: 达梦数据库配置
Host: 数据库地址
Port: 数据库端口
User: 数据库用户名
Password: 数据库密码
Parameters: 连接参数
Sqlite3:
Path: 数据路径
App.TSDB
时序数据库配置。
DBType: 数据库类型,取值influx tdengine
DBName: 数据库名称
Timeout: 客户端超时时间,influx操作接口使用,tdengine创建数据库时使用
MaxConn: 最大连接数,tdengine数据库有效
Influx: influx 数据库配置
Protocol: 协议,取值http udp
Addr: 数据库连接地址
Username: 数据库用户名
Password: 数据库密码
Sharding: 是否根据项目id创建数据库,3.0升级到4.0时可关闭该配置,使用统一DBName的数据库
CreateDatabaseSql: 创建数据库的语句模版
TDengine: 涛思 数据库配置
DriverName: 数据库驱动名称
Addr: 数据库连接地址
WriteBatchSize: 批量写入数据的行数
App.Redis
内存数据库配置。
Type: 数据库类型单机或集群,默认空,取值空 CLUSTER
Addrs: 连接地址
Password: 数据库密码
PoolSize: 数据库连接池
App.MQ
消息队列配置。
MQType: 消息队列类型,取值mqtt kafka
MQTT: mqtt 配置
Host: 连接地址
Port: 连接端口
Username: 用户名
Password: 密码
KeepAlive: 数字,连接存活时间,默认60
ConnectTimeout: 数字,连接超时时间,默认20
ProtocolVersion: 数字,协议版本3或4,默认4
Order: true同步消费, false异步消费
ClientIdPrefix: 客户端id前缀,服务单独配置
ServerName: 共享订阅服务名,服务单独配置
EnableSubShare: 开启共享订阅
Kafka:
Brokers: 数组,连接地址
Version: 版本
GroupID: 消费组id,服务单独配置
ClientID: 客户端id前缀,服务单独配置
MaxOpenRequests: 连接允许的最大未完成请求数量。当未完成请求达到这个值后,发送就会被阻塞。默认值是 5
Balancer: 消息发送策略,取值Hash ReferenceHash CRC32Balancer Murmur2Balancer
Partition: 消息发送的分区
AutoCommit: 消费消息自动提交
App.CORS
跨域配置。
Enable: 是否开启跨域
AllowOrigins: 数组,允许的源地址
AllowHeaders: 数组,允许的请求头
AllowCredentials: 是否可以包含用户凭据,例如 cookies、HTTP 验证或客户端 SSL 证书。
MaxAge: 用于指定预检请求的结果可以被缓存多长时间
App.JWTAuth
jwt token配置。
SigningMethod: token签名方式
SigningKey: token签名的key
Expired: token有效期,单位s
App.GZIP
gzip压缩配置。
Enable: 是否开启gzip
ExcludedExtentions: 数组,排除的扩展类型
ExcludedPaths: 数组,排除的请求路径
App.RateLimiter
请求频率限制配置参数。
Enable: 是否开启此限制
Count: 每秒限制数
RedisDB: 数据库db编号0-15
App.Root
数据库管理员配置。
UserName: 管理员用户名和id配置
App.API
接口客户端配置。
Metadata: 对象,通过该配置过滤服务端
Type: ak sk 所属类型,取值tenant(空间租户) project(项目用户)
AK: app key
SK: app密钥
Timeout: 客户端请求超时时间
App.Log
日志配置。
Level: 日志等级1-5
Format: 日志输出格式,取值json text
Output: 日志输出方式,取值stdout file
OutputFile: 日志输出文件路径
MaxAge:日志最大保存分钟
RotationTime:日志分割分钟
RotationSize:日志分割文件大小
RotationCount:日志保存个数
App.LocaleDir
国际化文件路径。
App.Operation
运维配置信息。
Address: 运维地址
Timeout: 请求超时时间
App.Endpoints
额外服务注册信息。
Metadata: 对象,注册服务的配置,客户端过滤用
Host: 注册服务的地址
HttpPort: 注册服务的 HTTP 协议端口
GrpcPort: 注册服务的 gRPC 协议端口
例子
服务配置
App:
# 注册服务名
ServerName: test
EtcdConfig: /airiot/config/pro.json
Etcd:
Endpoints:
- 127.0.0.1:2379
DialTimeout: 10
Username: root
Password: 123456
Server:
Metadata:
env: local
HTTP:
# http 注册地址
Host:
# http监听端口
Port: 9000
GRPC:
# grpc监听端口
Port: 8000
配置中心
{
"App": {
"RunMode": "release",
"PrintConfig": false,
"Swagger": true,
"Pprof": {
"Enable": true,
"Prefix": "",
"Port": 9000
},
"Gorm": {
"Debug": false,
"LogLevel": 3,
"DBType": "mysql",
"MaxLifetime": 24,
"MaxOpenConns": 20,
"MaxIdleConns": 1,
"Postgres": {
"Host": "127.0.0.1",
"Port": 5432,
"User": "root",
"Password": "123456",
"DBName": "postgres",
"SSLMode": "disable"
},
"MySQL": {
"Host": "127.0.0.1",
"Port": 3306,
"User": "root",
"Password": "123456",
"DBName": "",
"Parameters": "charset=utf8&parseTime=true"
},
"DM": {
"Host": "127.0.0.1",
"Port": 5236,
"User": "SYSDBA",
"Password": "123456",
"Parameters": "schema=SYSDBA&connectTimeout=30000"
}
},
"TSDB": {
"DBType": "influx",
"DBName": "tsdb",
"Timeout": 5,
"MaxConn": 50,
"Influx": {
"Protocol": "HTTP",
"Addr": "http://127.0.0.1:8086",
"Username": "admin",
"Password": "123456",
"Sharding": true,
"CreateDatabaseSql": "create database \"%s\""
},
"TDengine": {
"DriverName": "taosRestful",
"Addr": "root:taosdata@http(127.0.0.1:6041)/",
"WriteBatchSize": 10
}
},
"Redis": {
"Type": "",
"Addrs": [
"127.0.0.1:6379"
],
"Password": "123456",
"PoolSize": 10
},
"MQ": {
"MQType": "mqtt",
"MQTT": {
"Host": "127.0.0.1",
"Port": 1883,
"Username": "admin",
"Password": "123456",
"Order": true
}
},
"CORS": {
"Enable": false,
"AllowOrigins": [
"*"
],
"AllowMethods": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"AllowHeaders": [
"Authorization",
"Origin",
"X-Requested-With",
"Content-Type",
"Accept"
],
"AllowCredentials": true,
"MaxAge": 7200
},
"JWTAuth": {
"SigningMethod": "HS512",
"SigningKey": "airiot",
"Expired": 1209600
},
"GZIP": {
"Enable": true,
"ExcludedExtentions": [
".png",
".gif",
".jpeg",
".jpg"
],
"ExcludedPaths": []
},
"RateLimiter": {
"Enable": true,
"Count": 10000,
"RedisDB": 1
},
"Root": {
"UserName": "admin"
},
"API": {
"Metadata": {
"env": "local"
},
"Type": "tenant",
"AK": "47C11FE9-CDDF-47FE-A-EA-ADC9-BF4A-EB55",
"SK": "059011DF-CABC-41BB-8-B2-1CF6-1121-C3B1",
"Timeout": 60
},
"Log": {
"Level": 4,
"Format": "text",
"Output": "stdout",
"OutputFile": "log/service.log"
},
"LocaleDir": "/app/configs/locale",
"Operation": {
"Address": "http://operation:10088",
"Timeout": 60
},
"Endpoints": [
{
"Metadata": {
"env": "aliyun"
},
"Host": "主机ip"
}
]
}
}