# server启动引导配置
bootstrap:
# 全局日志
logger:
${日志scope名称,主要支持 config/auth/store/naming/cache/xdsv3/default}:
rotateOutputPath: ${日志文件位置}
errorRotateOutputPath: ${专门记录error级别的错误日志文件}
rotationMaxSize: ${单个日志文件大小最大值, 默认 100, 单位为 mb}
rotationMaxBackups: ${最大保存多少个日志文件, 默认 10}
rotationMaxAge: ${单个日志文件最大保存天数, 默认 7}
outputLevel: ${日志输出级别,debug/info/warn/error}
# 按顺序启动server
startInOrder:
open: true # 是否开启,默认是关闭
key: sz # 全局锁,锁的名称,根据锁名称进行互斥启动
# 注册为北极星服务
polaris_service:
probe_address: ${北极星探测地址,用于获取当前北极星server自身对外的IP, 默认为 ##DB_ADDR##}
enable_register: ${是否允许当前北极星进程进行自注册,即将自身的系统级服务注册通过北极星的服务注册能力进行注册,默认为 true}
isolated: ${注册的实例是否需要处理隔离状态,默认为 false}
services:
- name: polaris.checker # 北极星健康检查需要的系统级服务,根据该服务下的实例,进行健康检查任务的 hash 责任划分
protocols: # 注册的实例需要暴露的协议,即注册端口号
- service-grpc
# apiserver,北极星对外协议实现层
apiservers:
- name: service-eureka # 北极星支持 eureka 协议的协议层插件
option:
listenIP: "0.0.0.0" # tcp server 的监听 ip
listenPort: 8761 # tcp server 的监听端口
namespace: default # 设置 eureka 服务默认归属的北极星命名空间
refreshInterval: 10 # 定期从北极星的cache模块中拉取数据,刷新 eureka 协议中的数据缓存
deltaExpireInterval: 60 # 增量缓存过期周期
unhealthyExpireInterval: 180 # 不健康实例过期周期
connLimit: # 链接限制配置
openConnLimit: false # 是否开启链接限制功能,默认 false
maxConnPerHost: 1024 # 每个IP最多的连接数
maxConnLimit: 10240 # 当前listener最大的连接数限制
whiteList: 127.0.0.1 # 该 apiserver 的白名单 IP 列表,英文逗号分隔
purgeCounterInterval: 10s # 清理链接行为的周期
purgeCounterExpired: 5s # 清理多久不活跃的链接
- name: api-http # 北极星自身 OpenAPI 协议层
option:
listenIP: "0.0.0.0" # tcp server 的监听 ip
listenPort: 8090 # tcp server 的监听端口
enablePprof: true # 是否开启 golang 的 debug/pprof 的数据采集
enableSwagger: true # 是否开启 swagger OpenAPI doc 文档数据生成
api: # 设置允许开放的 api 接口类型
admin: # 运维管理 OpenAPI 接口
enable: true
console: # 北极星控制台 OpenAPI 接口
enable: true
include: [default] # 需要暴露的 OpenAPI 分组
client: # 北极星客户端相关 OpenAPI 接口
enable: true
include: [discover, register, healthcheck]
config: # 北极星配置中心相关 OpenAPI 接口
enable: true
include: [default]
- name: service-grpc # 北极星基于 gRPC 协议的客户端通信协议层,用于注册发现、服务治理
option:
listenIP: "0.0.0.0"
listenPort: 8091
enableCacheProto: true # 是否开启 protobuf 解析缓存,对于内容一样的protobuf减少序列化
sizeCacheProto: 128 # protobuf 缓存大小
tls: # 协议层支持 tls 的配置
certFile: ""
keyFile: ""
trustedCAFile: ""
api:
client:
enable: true
include: [discover, register, healthcheck]
- name: config-grpc # 北极星基于 gRPC 协议的客户端通信协议层,用于配置中心
option:
listenIP: "0.0.0.0"
listenPort: 8093
connLimit:
openConnLimit: false
maxConnPerHost: 128
maxConnLimit: 5120
api:
client:
enable: true
- name: xds-v3 # 北极星实现的 xDSv3 协议层
option:
listenIP: "0.0.0.0"
listenPort: 15010
connLimit:
openConnLimit: false
maxConnPerHost: 128
maxConnLimit: 10240
# 核心逻辑的配置
auth:
# 鉴权插件
name: defaultAuth
option:
# token 加密的 salt,鉴权解析 token 时需要依靠这个 salt 去解密 token 的信息
# salt 的长度需要满足以下任意一个:len(salt) in [16, 24, 32]
salt: polarismesh@2021
# 控制台鉴权能力开关,默认开启
consoleOpen: true
# 客户端鉴权能力开关, 默认关闭
clientOpen: false
namespace:
# 是否允许自动创建命名空间
autoCreate: true
naming:
auth:
open: false
# 批量控制器
batch:
${批量控制器配置,支持 register/deregister/clientRegister/clientDeregister}:
open: true # 是否开启该批量控制器
queueSize: 10240 # 暂存任务数量
waitTime: 32ms # 任务未满单次 Batch 数量的最大等待时间,时间到直接强制发起 Batch 操作
maxBatchCount: 128 # 单次 Batch 数量
concurrency: 128 # 处于批任务的 worker 协程数量
dropExpireTask: true # 是否开启丢弃过期任务,仅用于 register 类型的批量控制器
taskLife: 30s # 任务最大有效期,超过有效期则任务不执行,仅用于 register 类型的批量控制器
# 健康检查的配置
healthcheck:
open: true # 是否开启健康检查功能模块
service: polaris.checker # 参与健康检查任务的实例所在的服务
slotNum: 30 # 时间轮参数
minCheckInterval: 1s # 用于调整实例健康检查任务在时间轮内的下一次执行时间,限制最小检查周期
maxCheckInterval: 30s # 用于调整实例健康检查任务在时间轮内的下一次执行时间,限制最大检查周期
clientReportInterval: 120s # 用于调整SDK上报实例健康检查任务在时间轮内的下一次执行时间
batch: # 健康检查数据的批量写控制器
heartbeat:
open: true
queueSize: 10240
waitTime: 32ms
maxBatchCount: 32
concurrency: 64
checkers: # 健康检查启用插件列表,当前支持 heartbeatMemory/heartbeatRedis,由于二者属于同一类型健康检查插件,因此只能启用一个
- name: heartbeatMemory # 基于本机内存实现的健康检查插件,仅适用于单机版本
- name: heartbeatRedis # 基于 redis 实现的健康检查插件,适用于单机版本以及集群版本
option:
kvAddr: ##REDIS_ADDR## # redis 地址,IP:PORT 格式
# ACL user from redis v6.0, remove it if ACL is not available
kvUser: ##REDIS_USER# # 如果redis版本低于6.0,请直接移除该配置项
kvPasswd: ##REDIS_PWD## # redis 密码
poolSize: 200 # redis 链接池大小
minIdleConns: 30 # 最小空闲链接数量
idleTimeout: 120s # 认为空闲链接的时间
connectTimeout: 200ms # 链接超时时间
msgTimeout: 200ms # redis的读写操作超时时间
concurrency: 200 # 操作redis的worker协程数量
withTLS: false
# 配置中心模块启动配置
config:
# 是否启动配置模块
open: true
cache:
#配置文件缓存过期时间,单位s
expireTimeAfterWrite: 3600
# 缓存配置
cache:
open: true
resources:
- name: service # 加载服务数据
option:
disableBusiness: false # 不加载业务服务
needMeta: true # 加载服务元数据
- name: instance # 加载实例数据
option:
disableBusiness: false # 不加载业务服务实例
needMeta: true # 加载实例元数据
- name: routingConfig # 加载路由数据
- name: rateLimitConfig # 加载限流数据
- name: circuitBreakerConfig # 加载熔断数据
- name: users # 加载用户、用户组数据
- name: strategyRule # 加载鉴权规则数据
- name: namespace # 加载命名空间数据
- name: client # 加载 SDK 数据
# 存储配置
store:
# 单机文件存储插件
name: boltdbStore
option:
path: ./polaris.bolt
## 数据库存储插件
# name: defaultStore
# option:
# master: # 主库配置, 如果要配置 slave 的话,就把 master 替换为 slave 即可
# dbType: mysql # 数据库存储类型
# dbName: polaris_server # schema 名称
# dbUser: ##DB_USER## # 数据库用户
# dbPwd: ##DB_PWD## # 数据库用户密码
# dbAddr: ##DB_ADDR## # 数据库连接地址,HOST:PORT 格式
# maxOpenConns: 300 # 最大数据库连接数
# maxIdleConns: 50 # 最大空闲数据库连接数
# connMaxLifetime: 300 # 单位秒 # 连接的最大存活时间,超过改时间空闲连接将会呗释放
# txIsolationLevel: 2 #LevelReadCommitted
# 插件配置
plugin: # 本次暂不涉及,后续文章在详细说明
|