-
Notifications
You must be signed in to change notification settings - Fork 64
Expand file tree
/
Copy pathpolaris.yaml
More file actions
471 lines (471 loc) · 16.5 KB
/
Copy pathpolaris.yaml
File metadata and controls
471 lines (471 loc) · 16.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
#描述:全局配置项
global:
#描述系统相关配置
system:
#描述:SDK运行模式
#类型:enum
#范围:0(直连模式,SDK直接对接server); 1(代理模式,SDK只对接agent, 通过agent进行server的对接)
#默认值:0
mode: 0
#服务发现集群
discoverCluster:
namespace: Polaris
service: polaris.discover
#可选:服务刷新间隔
refreshInterval: 10m
#健康检查集群
healthCheckCluster:
namespace: Polaris
service: polaris.healthcheck
#可选:服务刷新间隔
refreshInterval: 10m
#监控上报集群
monitorCluster:
namespace: Polaris
service: polaris.monitor
#可选:服务刷新间隔
refreshInterval: 10m
api:
#描述:api超时时间
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:1s
timeout: 1s
#描述:上报间隔
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:60s
reportInterval: 60s
#描述:API因为网络原因调用失败后的重试次数
#类型:int
#范围:[0:...]
#默认值:5
maxRetryTimes: 5
#描述:重试间隔
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1s:...]
#默认值:1s
retryInterval: 1s
#描述:客户端绑定的网卡地址
bindIf:
#描述:对接polaris server的相关配置
serverConnector:
#描述:访问server的连接协议,SDK会根据协议名称会加载对应的插件
#类型:string
#范围:已注册的连接器插件名
#默认值:grpc
protocol: grpc
#描述:发起连接后的连接超时时间
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:500ms
connectTimeout: 500ms
#描述:远程请求超时时间
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:1s
messageTimeout: 1s
#描述:连接空闲时间,长连接模式下,当连接空闲超过一定时间后,SDK会主动释放连接
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:1s
connectionIdleTimeout: 1s
#描述:首次请求的任务队列长度,当用户发起首次服务访问请求时,SDK会对任务进行队列调度并连接server,当积压的任务数超过队列长度后,SDK会直接拒绝首次请求的发起。
#类型:int
#范围:[0:...]
#默认值:1000
requestQueueSize: 1000
#描述:server节点的切换周期,为了使得server的压力能够均衡,SDK会定期针对最新的节点列表进行重新计算自己当前应该连接的节点,假如和当前不一致,则进行切换
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1m:...]
#默认值:10m
serverSwitchInterval: 10m
plugin:
grpc:
#描述:GRPC客户端单次最大链路接收报文
#类型:int
#范围:(0:524288000]
maxCallRecvMsgSize: 52428800
#统计上报设置
statReporter:
#描述:是否将统计信息上报至monitor
#类型:bool
#默认值:true
enable: false
#描述:启用的统计上报插件类型
#类型:list
#范围:已经注册的统计上报插件的名字
#默认值:stat2Monitor(将信息上报至monitor服务)
chain:
- prometheus
# - pushgateway
#描述:统计上报插件配置
plugin:
prometheus:
#描述: 设置 prometheus 指标上报模式
#类型:string
#默认值:pull
#范围:pull|push
type: pull
#描述: 设置 prometheus http-server 的监听IP, 仅 type == pull 时生效
#类型:string
#默认值: ${global.api.bindIP}
#默认使用SDK的绑定IP
metricHost:
#描述: 设置 prometheus http-server 的监听端口, 仅 type == pull 时生效
#类型:int
#默认值: 28080
#如果设置为负数,则不会开启默认的http-server
#如果设置为0,则随机选择一个可用端口进行启动 http-server
metricPort: 28080
# #描述: 设置 pushgateway 的地址, 仅 type == push 时生效
# #类型:string
# #默认 ${global.serverConnector.addresses[0]}:9091
# address: 127.0.0.1:9091
# #描述:设置metric数据推送到pushgateway的执行周期, 仅 type == push 时生效
# #类型:string
# #格式:^\d+(ms|s|m|h)$
# #范围:[1m:...]
# #默认值:10m
# pushInterval: 10s
# 地址提供插件,用于获取当前SDK所在的地域信息
location:
providers:
- type: local
options:
region: ${REGION}
zone: ${ZONE}
campus: ${CAMPUS}
- type: remoteHttp
options:
region: http://127.0.0.1/region
zone: http://127.0.0.1/zone
campus: http://127.0.0.1/campus
- type: remoteService
options:
target: grpc://127.0.0.1
# 事件上报插件,用于上报SDK内部的各种事件
eventReporter:
# 是否开启事件上报
enable: false
# 事件上报插件链
chain:
- pushgateway
# 描述:客户端身份相关配置,用于在服务端识别和管理 SDK 客户端实例
client:
# 描述:客户端标签,附加在客户端上的自定义元数据,会随上报信息一并发送到服务端
# 类型:map[string]string
# 默认值:空 map
labels: {}
# key1: value1
# key2: value2
# 描述:Admin相关的配置
admin:
# 描述:Admin的监听的IP
host: 0.0.0.0
# 描述:Admin监听的端口
port: 28080
#描述:主调端配置
consumer:
#描述:本地缓存相关配置
localCache:
#描述:缓存类型
#类型:string
#范围:已注册的本地缓存插件名
#默认值:inmemory(基于本机内存的缓存策略)
type: inmemory
#描述:服务过期淘汰时间
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1m:...]
#默认值:24h
serviceExpireTime: 24h
#描述:服务定期刷新周期
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1s:...]
#默认值:2s
serviceRefreshInterval: 2s
#描述:服务缓存持久化目录,SDK在实例数据更新后,按照服务维度将数据持久化到磁盘
#类型:string
#格式:本机磁盘目录路径,支持$HOME变量
#默认值:$HOME/polaris/backup
persistDir: $HOME/polaris/backup
#描述:缓存写盘失败的最大重试次数
#类型:int
#范围:[1:...]
#默认值:5
persistMaxWriteRetry: 5
#描述:缓存从磁盘读取失败的最大重试次数
#类型:int
#范围:[1:...]
#默认值:1
persistMaxReadRetry: 1
#描述:缓存读写磁盘的重试间隔
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:1s
persistRetryInterval: 1s
#描述:缓存文件有效时间差值
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1ms:...]
#默认值:60s
persistAvailableInterval: 60s
#描述:启动后,首次名字服务是否可以使用缓存文件
#类型:bool
#范围:[true: false]
#默认值:true
startUseFileCache: true
#描述:服务路由相关配置
serviceRouter:
# 前置路由链,在主路由链之前执行,不填则默认开启泳道路由插件
# 泳道路由(laneRouter)优先于规则路由执行,用于灰度发布、A/B 测试等流量隔离场景
beforeChain:
# 泳道路由策略(默认的前置路由策略)
# 根据请求中的泳道染色标签(service-lane)将流量路由到对应泳道实例
# 无染色标签时尝试通过流量匹配规则自动染色,匹配失败则回退到基线实例
- laneRouter
# 主路由链, 不填则默认开启自定义路由和就近路由插件
chain:
# 基于主调和被调服务规则的路由策略(默认的路由策略)
- ruleBasedRouter
# 就近路由策略(默认的路由策略)
- nearbyBasedRouter
afterChain:
# 兜底路由,默认存在
- filterOnlyRouter
# 开启零实例保护路由,和 filterOnlyRouter 互斥
# - zeroProtectRouter
#描述:服务路由插件的配置
plugin:
laneRouter:
#描述:基线泳道实例的选取模式
#类型:int
#范围:
# 0(OnlyUntaggedInstance):只选取没有任何泳道标签(无 lane 元数据 key)的实例作为基线(默认)
# 1(ExcludeEnabledLaneInstance):排除已启用泳道关联的实例,其余实例均作为基线
#默认值:0
baseLaneMode: 0
nearbyBasedRouter:
#描述:就近路由的最小匹配级别
#类型:string
#范围:region(大区)、zone(区域)、campus(园区)
#默认值:zone
matchLevel: zone
ruleBasedRouter:
#描述:规则匹配失败时的返回的实例列表
#类型:string
#范围:all代表返回所有实例, none表示返回空列表
#默认值:all
failoverType: all
#描述:至少应该返回多少比率的实例,如果不填,默认0%,即全死全活
#类型:float64
#范围:[0:...1.0]
#默认值:0
percentOfMinInstances: 0
#描述:是否开启全死全活,默认开启
#类型:bool
#范围:[true: false]
#默认值:true
enableRecoverAll: true
#描述:负载均衡相关配置
loadbalancer:
#描述:负载均衡类型
#范围:已注册的负载均衡插件名
#默认值:权重随机负载均衡
type: weightedRandom
plugin:
#描述:虚拟节点的数量
#类型:int
#默认值:500
ringHash:
vnodeCount: 500
#描述:节点熔断相关配置
circuitBreaker:
#描述:是否启用节点熔断功能
#类型:bool
#默认值:true
enable: true
#描述:熔断器定时检查周期
#类型:duration
#默认值:10s
checkPeriod: 10s
#描述:熔断周期,被熔断后多久可以变为半开
#类型:duration
#默认值:30s
sleepWindow: 30s
#描述:半开状态后多少个成功请求则恢复
#类型:int
#默认值:8
successCountAfterHalfOpen: 3
# 描述:是否启用默认熔断规则
#类型:bool
#默认值:true
defaultRuleEnable: true
# 描述:连续错误数熔断器默认连续错误数
#类型:int
#默认值:10
defaultErrorCount: 10
# 描述:错误率熔断器默认错误率
#类型:int
#默认值:50
defaultErrorPercent: 50
# 描述:错误率熔断器默认统计周期
#类型:int64
#默认值:60s
defaultInterval: 60s
# 描述:错误率熔断器默认最小请求数
#类型:int
#默认值:10
defaultMinimumRequest: 10
#描述:熔断策略,SDK会根据策略名称加载对应的熔断器插件
#类型:list
#范围:已注册的熔断器插件名
#默认值:composite 适配服务/接口/实例 熔断插件
chain:
- composite
# 描述: 权重调整相关配置
weightAdjust:
# 描述: 是否启用权重调整功能, 默认为false
enable: false
# 描述: 权重调整插件链
chain:
- warmup
# 被调方配置
provider:
# 限流配置
rateLimit:
# 描述:是否启用限流能力
# 类型:bool
# 默认值:true(DefaultRateLimitEnable)
enable: true
# 描述:本地最多缓存的限流窗口数量;超出后旧窗口会被淘汰,避免无限增长
# 类型:int
# 默认值:20000(MaxRateLimitWindowSize)
maxWindowSize: 20000
# 描述:限流窗口超时清理周期;空闲超过该周期的窗口会被回收
# 类型:duration
# 格式:^\d+(ms|s|m|h)$
# 默认值:1m(DefaultRateLimitPurgeInterval)
purgeInterval: 1m
# 描述:远程限流(type=GLOBAL)所对接的限流服务命名空间
# 类型:string
# 默认值:Polaris(DefaultLimiterNamespace)
limiterNamespace: Polaris
# 描述:远程限流(type=GLOBAL)所对接的限流服务名
# 类型:string
# 默认值:polaris.limiter(DefaultLimiterService)
# 注意:禁止使用 polaris.metric(ForbidServerMetricService),SDK 会拒绝该服务名
limiterService: polaris.limiter
# 描述:限流插件配置;不同 rule.action 会路由到不同插件
# - reject : 漏桶/令牌桶拒绝型 QPS 限流(rule.resource=QPS && action=reject)
# - unirate : 匀速排队 QPS 限流(rule.action=unirate),支持最大排队时间
# - concurrency : 并发数限流(rule.resource=CONCURRENCY),纯本地原子计数
plugin:
# 匀速排队限流器配置
unirate:
# 描述:请求被排队等待时的最大允许排队时长;超出则直接拒绝
# 当 rule.maxQueueDelay 为 0 时回退到该值;rule 上配置非 0 则以 rule 为准
# 类型:duration
# 格式:^\d+(ms|s|m|h)$
# 默认值:1s(unirate.defaultMaxQueuingTime)
maxQueuingTime: 1s
# reject / concurrency 当前没有暴露 yaml 字段,使用插件内默认行为即可
# reject: {}
# concurrency: {}
# 无损上下线配置
lossless:
# 是否启用无损上下线, 默认为false
enable: false
# 描述: 无损上下线的策略
# 类型: string
# 范围: DELAY_BY_TIME, DELAY_BY_COUNT
strategy: DELAY_BY_TIME
# 描述: 时长延迟的延迟时间
# 类型: duration
# 默认值: 30s
delayRegisterInterval: 30s
# 描述: 探测延迟的检查间隔
# 类型: duration
# 默认值: 5s
healthCheckInterval: 5s
# 服务鉴权配置
auth:
# 是否启用鉴权能力,默认关闭,对存量用户零开销
# 类型: bool
# 默认值: false
enable: false
# 鉴权插件链:按顺序执行,任一返回拒绝则短路返回 Forbidden
# 类型: list
# 范围: 已注册的鉴权插件名
# 默认值: 空列表
chain:
- blockAllowList
# 各鉴权插件的具体配置
plugin:
blockAllowList: {}
# 配置中心默认配置
config:
# 类型转化缓存的key数量
propertiesValueCacheSize: 100
# 类型转化缓存的过期时间,默认为1分钟
propertiesValueExpireTime: 60000
# 本地缓存配置
localCache:
#描述: 配置文件持久化到本地开关
persistEnable: true
#描述: 配置文件持久化目录,SDK在配置文件变更后,把相关的配置持久化到本地磁盘
persistDir: ./polaris/backup/config
#描述: 配置文件写盘失败的最大重试次数
persistMaxWriteRetry: 1
#描述: 配置文件从磁盘读取失败的最大重试次数
persistMaxReadRetry: 0
#描述: 缓存读写磁盘的重试间隔
persistRetryInterval: 500ms
#描述: 远端获取配置文件失败,兜底降级到本地文件缓存
fallbackToLocalCache: true
# 连接器配置,默认为北极星服务端
configConnector:
id: polaris-config
connectorType: polaris
#描述: 访问server的连接协议,SDK会根据协议名称会加载对应的插件
protocol: polaris
#描述: 发起连接后的连接超时时间
connectTimeout: 500ms
#描述: 与服务端发起远程请求超时时间
messageTimeout: 5s
#描述: 连接空闲时间(以最后一次消息交互时间来算),长连接模式下,当连接空闲超过一定时间后,SDK会主动释放连接
connectionIdleTimeout: 60s
#描述: server节点的切换周期,为了使得server的压力能够均衡,SDK会定期切换目标服务端节点
serverSwitchInterval: 10m
#描述:重连间隔时间
reconnectInterval: 500ms
#描述: 开启客户端鉴权后,需要填写用户/用户组的访问凭据
token: ""
#描述:连接器插件配置
plugin:
polaris:
#描述:GRPC客户端单次最大链路接收报文
#类型:int
#范围:(0:524288000]
maxCallRecvMsgSize: 52428800
# 配置过滤器
configFilter:
enable: true
chain:
# 启用配置解密插件
- crypto
plugin:
crypto:
# 配置解密插件的算法插件类型
entries:
- name: AES