Skip to content
This repository has been archived by the owner on Feb 9, 2023. It is now read-only.

Latest commit

 

History

History
386 lines (298 loc) · 37.8 KB

config.md

File metadata and controls

386 lines (298 loc) · 37.8 KB

配置选项

配置示例

configs/config_sample.yaml

配置说明

service 配置 (server.ServiceOptions)

字段名 类型 含义 必填 默认值 备注
appName string 应用名 默认从环境变量 com_cmdb_appname中取
clusterName string 集群名 默认从环境变量 com_cmdb_clustername中取

httpServer 配置 (server.Options)

gin文档

字段名 类型 含义 必填 默认值 备注
port int 端口号 8080
mode string gin 模式 release 可选有 ["debug", "release", "test"]
shutdownTimeout time.Duration 停服超时时间 10s
middlewares middleware struct 见下表 中间件
middleware 配置 (server.MiddlewaresOptions)
字段名 类型 含义 必填 默认值 备注
accessLog AccessLogMwOptions struct 见下表
urlMetrics UrlMetricsMwOptions struct 见下表
jwtAuth JwtAuthMwOptions struct 见下表
accessLog 配置 (server.AccessLogMwOptions)
字段名 类型 含义 必填 默认值 备注
enabled bool 是否开启 true
pattern string 匹配格式 %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"
path string 日志目录 空串 支持相对路径
fileName string 文件名 access.log
noFile bool 是否只显示到标准输出 true
maxAge int 日志保留旧文件的最大天数 7
maxBackups int 日志保留旧文件的最大个数 7
maxSize int 在进行切割之前,日志文件的最大大小 1024 单位为M
compress bool 是否压缩/归档旧文件 false
urlMetrics 配置 (server.UrlMetricsMwOptions)
字段名 类型 含义 必填 默认值 备注
enabled bool 是否开启 true
originalPath bool 是否上报原始路径 false 对于restful的url上报原始路径需要在哨兵配置文件中配置聚合规则
jwtAuth 配置 (server.JwtAuthMwOptions)
字段名 类型 含义 必填 默认值 备注
enabled bool 是否开启 false
authHeader string 认证头 Authorization
tokenType string token类型 Bearer
accessTokenExpiresIn int 请求token失效时间 3600
refreshTokenExpiresIn int 刷新token失效时间 7200
oidc Oidc struct oidc 参数
routePathPrefix string 是否开启 空串
ignorePaths []string 忽略认证路径 []
oidc 配置 (oidc.Options)
字段名 类型 含义 必填 默认值 备注
clientId string 客户端id
clientSecret string 客户端密钥
encryption string 加密类型 HS256

log 配置 ([]log.Options)

logrus文档

file-rotatelogs文档

字段名 类型 含义 必填 默认值 备注
name string logger名称 空串 如果不写且在数组中为第一个,那么其默认值为 default
level string 日志级别 info 可选有 ["trace", "debug", "info","warn", "error", "fatal", "panic"]
packageLevel map[string]string 包日志级别 空map key为包名称,value为日志级别,注意此处日志级别如果超过level定义的日志级别,则无效
path string 日志目录 空串 支持相对路径
errorPath string 错误日志路径 空串 支持相对路径
fileName string 日志文件名 空串 如果不写且在数组中为第一个,那么其默认值为 service.appName
writableStack bool 是否打印错误堆栈 false
format string 日志格式 txt 可选有 ["json", "txt", "blank" //表示空白]
noFile bool 是否只显示到标准输出 true
maxAge int 日志保留旧文件的最大天数 7
maxBackups int 日志保留旧文件的最大个数 7
maxSize int 在进行切割之前,日志文件的最大大小 1024 单位为M
compress bool 是否压缩/归档旧文件 false
warnHook bool 是否将warn级别的日志添加到error日志文件中 false
level packageLevel 说明
  • level 设定当前logger的日志级别,日志级别以及其对应值为 {"panic":0, "fatal":1, "error":2, "warn":3, "info":4, "debug":5, "trace":6}
  • 根据以上值定义,如果level设定为info,那么5,6对应的debug和trace级别都不会被打印
  • packageLevel 设定某个包日志级别,这个日志级别是局限在level的设定下的
  • 假如设置 {"gorm.io/gorm": "error"},那么 gorm.io/gorm 这个包下的 error以上的日志都不会被打印
  • 假如设置 {"gorm.io/gorm": "debug"}, 因为其受限于level不能实现,所以debug级别的日志不能被打印,其相当于日志级别设置为info

redis 配置 ([]redis.Options)

goredis文档

字段名 类型 含义 必填 默认值 备注
name string redis配置名称 空串 需唯一
connType string 连接类型 空串 可选有 `["client", "cluster", "sentinel", "sharded_sentinel"
addr []string 地址列表 格式为 host:port 如果是单实例只会取第一个
username string 用户名 空串
password string 密码 空串
masterNames []string master名称列表 只有sentinel sharded_sentinel 类型时必填 nil
autoGenShardName bool 是否自动生成分片名称 false 只有sharded_sentinel 类型时有用
db int 数据库 0
maxRetries int 最大重试次数 3 传-1表示禁用重试
minRetryBackoff time.Duration 最小重试backoff 8ms 传-1表示禁用backoff
maxRetryBackoff time.Duration 最大重试backoff 512ms 传-1表示禁用backoff
dialTimeout time.Duration 连接超时时间 5s
readTimeout time.Duration 读超时 3s 传-1表示不超时
writeTimeout time.Duration 写超时 3s 传-1表示不超时
poolSize int 最大连接数 10 * gomaxproces(0)
minIdleConns int 最小空闲连接数 0
maxConnAge time.Duration 最大连接时间 默认不关闭连接
poolTimeout time.Duration 所有连接都在工作是需要等待超时时间 readTimeout+1s
idleTimeout time.Duration 关闭空闲连接需要等待的时间 5m
idleCheckFrequency time.Duration 空闲连接检查时间间隔 1m
autoGenShardName 说明
  • 如果为false,默认使用MasterName, 只当sharded_sentinel 类型使用。
  • 该字段用来兼容旧项目,非特殊情况请勿设置成true,否则在MasterNames顺序变化时会造成分配rehash

memcache 配置 ([]memcache.Options)

gomemcache文档

字段名 类型 含义 必填 默认值 备注
name string memcache配置名称 空串 需唯一
addr []string 地址列表 nil 格式为 host:port
timeout time.Duration 连接超时时间 100ms
maxIdleConns int 最大空闲连接数 每个地址2个

db 配置 ([]db.Options)

gorm文档

字段名 类型 含义 必填 默认值 备注
name string db配置名称 空串 需唯一
type string db类型 mysql 可选有 ["mysql", "ddb"]
url string db连接地址 空串 连接串格式
maxIdleConns int 最大空闲连接数 2
maxOpenConns int 最大连接数 0 0为无限制
connMaxLifetime time.Duration 连接最长存活时间 0 小于等于0 连接将一直存在
connMaxIdleTime time.Duration 连接最长空闲时间 0 小于等于0 连接将一直存在

注意:如果是ddb,确定是否能使用服务端预处理,如果不能请在url参数中设置InterpolateParams=true

kafka 配置 ([]kafka.Options)

sarama文档

sarama/config.go

字段名 类型 含义 必填 默认值 备注
name string kafka配置名称 空串 需唯一
addr []string 地址列表 nil 格式为 host:port
version string 版本 2.1.0
maxOpenRequests int 最大打开连接数 5
dialTimeout time.Duration 连接超时 30s
readTimeout time.Duration 读超时 30s
writeTimeout time.Duration 写超时 30s
metadata metadata struct 见下表
consumer consumer struct 见下表
producer producer struct 见下表
kafka metadata 配置

sarama/consumer.go

字段名 类型 含义 必填 默认值 备注
retries int 重试次数 3
timeout time.Duration 会话超时 60s
kafka consumer 配置

sarama/consumer.go

字段名 类型 含义 必填 默认值 备注
group string 消费组
enableAutoCommit bool 是否自动提交offset true
autoCommitInterval time.Duration 自动提交时间间隔 1s
initialOffset int64 消费的初始offset 最新offset 这个配置在在之前没有提交过offset的情况下有效,OffsetNewest=-1 OffsetOldest=-2
sessionTimeout time.Duration 会话超时 10s 类似java中 group.min.session.timeout.msgroup.max.session.timeout.ms
minFetchBytes int32 每次请求最小字节数 1 等价于java中的 fetch.min.bytes
defaultFetchBytes int32 每次请求默认字节数 1024 * 1024 类似java中的 fetch.message.max.bytes
maxFetchBytes int32 每次请求最大字节数 0 类似java中的 fetch.message.max.bytes,0表示无限制
maxFetchWait time.Duration 每次请求最长等待时间 250ms 类似java中的 fetch.wait.max.ms
retries int 重试次数 3
kafka producer 配置

sarama/sync_producer.go

sarama/async_producer.go

字段名 类型 含义 必填 默认值 备注
maxMessageBytes int 消息最大字节数 1000000
acks int16 ack机值 1 可选有 {0:"NoResponse,不等ACK", 1:"WaitForLocal,本地ack":1,-1:"WaitForLocal,副本ack"} 等价于java中的 request.required.acks
timeout time.Duration 等待ack的超时时间 10秒 等价于java中的 request.timeout.ms
retries int 重试次数 3 类似java中的 message.send.max.retries
maxFlushBytes int 触发flush的字节大小 100*1048576
maxFlushMessages int 触发flush的消息大小 0
flushFrequency time.Duration 触发flush的时间间隔 1s 类似java中的 queue.buffering.max.ms
idempotent bool 发送是否幂等 false 如果为true,必须要求acks = -1

sentinel 配置

字段名 类型 含义 必填 默认值 备注
circuitBreakerRules []*circuitbreaker.Rule 熔断规则 熔断文档
flowRules []*flow.Rule 流控规则 流控文档
hotspotRules []*hotspot.Rule 热点参数流控规则 热点文档
isolationRules []*isolation.Rule 流量隔离规则 隔离文档
systemRules []*system.Rule 自适应流控规则 自适应文档
circuitBreakerRules 配置 (circuitbreaker.Rule)

熔断降级

字段名 类型 含义 必填 默认值 备注
resource string 熔断器埋点资源名称 空串
strategy uint32 熔断策略 0 可选有 {0: "SlowRequestRatio", 1: "ErrorRatio", 2: "ErrorCount"},详情见相关文档
retryTimeoutMs uint32 熔断触发后持续时间 0 单位为毫秒
statIntervalMs uint32 统计的时间窗口长度 0 单位为毫秒
minRequestAmount uint64 静默数量 0 触发熔断的最小请求数目
maxAllowedRtMs uint64 请求慢调用的临界值 0 单位为毫秒
threshold float64 慢调用比例的阈值 0 仅SlowRequestRatio模式有效,小数表示,比如0.1表示10%
flowRules 配置 (flow.Rule)

流量控制

字段名 类型 含义 必填 默认值 备注
resource string 流控资源名称 空串
tokenCalculateStrategy int32 流控token计算策略 0 可选有 {0:"Direct", 1:"WarmUp", 2:"MemoryAdaptive"}
controlBehavior int32 控制策略 0 可选有 `{0:"Reject,超过阈值直接拒绝", 1:"Throttling,匀速排队"}
threshold float64 流控阈值 0 如果字段 StatIntervalInMs是1000(也就是1秒),那么Threshold就表示QPS
statIntervalInMs uint32 规则对应的流量控制器的独立统计结构的统计周期 0 如果StatIntervalInMs是1000,也就是统计QPS
relationStrategy int32 调用关系限流策略 0 可选有`{0:"CurrentResource", 1:"AssociatedResource"}
refResource string 关联的resource 空串
warmUpPeriodSec uint32 预热的时间长度 0 仅仅对 WarmUpTokenCalculateStrategy生效
warmUpColdFactor uint32 预热的因子 3 仅仅对 WarmUpTokenCalculateStrategy生效
maxQueueingTimeMs uint32 匀速排队的最大等待时间 0 仅对 Throttling ControlBehavior生效
hotspotRule 配置 (hotspot.Rule)

热点参数流控

字段名 类型 含义 必填 默认值 备注
resource string 资源名 空串
metricType int32 流控指标类型 0 可选有 {0:"Concurrency,并发", 1:"QPS"}
controlBehavior int32 流控的效果 0 可选有 {0:"Reject, 超过阈值直接拒绝", 1:"Throttling,匀速排队"}
paramIndex int 热点参数的索引 0 对应 WithArgs(args ...interface{}) 中的参数索引位置,从 0 开始
threshold int64 限流阈值 0 针对每个热点参数
maxQueueingTimeMs int64 最大排队等待时长 0 仅在匀速排队模式 + QPS 下生效
burstCount int64 静默值 0 仅在快速失败模式 + QPS 下生效
durationInSec int64 统计结构填充新的 token 的时间间隔 0 仅在请求数(QPS)流控模式下生效
paramsMaxCapacity int64 统计结构的容量最大值 20000 Top N
specificItems map[interface{}]int64 特定参数的特殊阈值配置 空map 可以针对指定的参数值单独设置限流阈值,不受前面 Threshold 阈值的限制
isolationRules 配置 (isolation.Rule)

并发隔离控制

字段名 类型 含义 必填 默认值 备注
resource string 资源名 空串
metricType int32 指标类型 0 可选有 {0:"Concurrency,并发"}
threshold uint32 隔离阈值 0 如果资源当前的并发数高于阈值 (Threshold),那么资源将不可访问
systemRules 配置 (system.Rule)

系统自适应流控

字段名 类型 含义 必填 默认值 备注
metricType int32 指标类型 0 可选有 {0:"Load,load1负载", 1:"AvgRT,平均响应时间", 2:"Concurrency,并发", 3:"InboundQPS,QPS", 4:"CpuUsage,CPU使用率"}
triggerCount float64 最低临界值 0
strategy int32 自适应性策略 0 可选有 {-1:"NoAdaptive,无策略", 0:"BBR,类似TCP BBR"}

httpClient 配置 (httplib.Options)

fasthttp文档

字段名 类型 含义 必填 默认值 备注
name string 客户端名称 User-Agent header的值 空串
noDefaultUserAgentHeader bool 是否设置User-Agent header fasle
maxConnsPerHost int 每个host的最大连接数 512
maxIdleConnDuration time.Duration 空闲的keep-alive连接最大关闭时间 10s
maxConnDuration time.Duration keep-alive连接最大关闭时间 无限制
maxIdemponentCallAttempts int 最大重试次数 5
readBufferSize int 每个连接的读缓存大小 4096
writeBufferSize int 每个连接的写缓存大小 4096
readTimeout time.Duration 读超时 无限制 建议设置
writeTimeout time.Duration 写超时 无限制 建议设置
maxResponseBodySize int 最大响应体大小 无限制
maxConnWaitTimeout time.Duration 等待空闲连接的最大时间 不等待 默认不等待,直接返回 ErrNoFreeConns

tracer 配置 (tracer.Options)

字段名 类型 含义 必填 默认值 备注
updHost string tracer上报udp host 160.254.169.253
updPort string tracer上报udp port 6831

dlock 配置 (dlock.Options)

字段名 类型 含义 必填 默认值 备注
pools []string redis配置名列表 空串

pprof 配置 (server.PprofOptions)

pprof文档

字段名 类型 含义 必填 默认值 备注
switch bool 是否开启pprof false
port int 端口号 nil

miner 缓存配置 ([]multicache.Options)

gcache文档 goredis文档

字段名 类型 含义 必填 默认值 备注
type string 缓存类型 空串 可选有 ["local", "redis"]
priority int 加载优先级 nil 0为最高优先级,数字越大优先级越低, local默认0, redis默认1
capacity int 最大容量,用于local 1,000,000
defaultRedis string 默认使用的redis配置名 空串 type为redis情况下必须填写

xxljob 配置 (xxljob.Options)

xxljob文档 xxl-job-executor-go 文档

字段名 类型 含义 必填 默认值 备注
enabled bool 是否开启 是否开启xxljob
serverAddr string xxljob后台地址 空串
accessToken string 请求令牌 空串 请求令牌,暂时可不用填写
executorIp string 本地执行器ip 默认取本机ip地址
executorPort int 本地执行器端口 19876
registryKey string 执行器名称 默认值为集群名
logDir string 日志目录 "./log/xxljob"

zookeeper 配置(zookeeper.Options)

字段名 类型 含义 必填 默认值 备注
name string zookeeper客户端名称 空串 需唯一
addr []string 地址列表 格式为 host:port
sessionTimeout time.Duration 会话超时 5s