特意花时间整理了一份ServiceComb的配置手册,方便大家使用,几乎涵盖了所有配置,包含负载均衡、健康检查、服务治理熔断限流、路由策略等等,建议收藏哦~
APPLICATION_ID: appid
service_description:
name: user-service
version: 1.0.0
properties:
allowCrossApp: false
environment: production #production, development,如果在开发的时候配置成开发模式,修改契约时可以不变更版本
servicecomb:
service:
registry:
address: http://127.0.0.1:30100 #注册地址
instance:
healthCheck:
interval: 30 # 健康检查的间隔时间,默认是30秒,可动态配置
times: 3 # 健康检查的检测次数,默认是3次,可动态配置
watch: true # 配置成true可以快速感知实例的变化
preferIpAddress: false #是否启用ip地址作为实例的名称,true表示使用ip,否则使用hostname
diagnose:
interval: 12
config:
client:
serverUri: http://127.0.0.1:30103 #如果不配置,则表示不连接配置中心
refreshMode: 1 #配置刷新方式,0表示服务端push监听的机制,1表示客户端主动pull,通过LB只能配置成1
refresh_interval: 5000 #刷新得间隔时间
first_refresh_interval: 5000 #首次刷新的延迟时间
monitor:
client:
enabled: true #是否开启,如果不需要对接,请设置成false
rest:
address: 0.0.0.0:18082?sslEnabled=false&protocol=http2 #sslEnabled是否开启tls,protocol是支持协议,默认为http
client:
thread-count: 8
connection:
maxPoolSize: 10
idleTimeoutInSeconds: 30 #单位:秒
keepAlive: true #是否开启长连接
server:
thread-count: 8
compression: false #支持服务端压缩
maxHeaderSize: 8192 #单位byte
timeout: 3000 #单位毫秒,使用rest over servlet方式时生效
connection:
idleTimeoutInSeconds: 60 # 服务端连接超时时间,一个连接在指定时间内没有接收到请求
uploads:
directory: /user/upload # 文件上传
maxSize: 1024 #上传文件body大小,也可以作为传输数据的大小限制
maxFileSize: 3 #文件个数限制
fileSizeThreshold: 0 #磁盘大小阈值
request:
timeout: 1000 #请求超时时间,支持全局、微服务、契约、方法四个级别
accesslog:
enabled: true
pattern: "%h %{dd/MMM/yyyy:HH:mm:ss.SSSZ|GMT+0008|en_US}t %r %s %B %D"
metrics:
enabled: true
window_time: 600000
publisher:
defaultLog:
enabled: true
handler:
chain:
Provider:
default: qps-flowcontrol-provider,bizkeeper-provider
Consumer:
default: qps-flowcontrol-consumer,loadbalance,bizkeeper-consumer
#限流的相关配置
flowcontrol:
Provider: #服务端限流
qps:
global:
limit: 1000 #全局限流,默认是最大值
limit:
service1: 500 #对单个consuer服务进行限流,默认无,如果有要求需要添加
Consumer:
qps:
limit:
serivce2: #对服务级别限流500
schema1: #对服务的schema级别进行限流500
operation1: 100 #对服务的schema的操作级别进行限流
#服务容错
fallback: #容错策略支持全局、微服务和方法级别
Consumer:
springmvc:
codeFirst:
fallbackForce:
enabled: true #是否开启容错机制,默认为false
force: true #是否强制开启容错机器
maxConcurrentRequests: 10 #隔离时最大的并发数,默认为10,客户端调用时
fallbackpolicy: #容错策略,默认提供returnNull、throwException两种策略, policy支持全局、微服务和方法级别
Consumer:
springmvc:
codeFirst:
fallbackFromCache:
policy: fromCache #从缓存中获取上一次成功的数据
fallbackReturnNull:
policy: returnNull #服务降级返回null,用户需要对该值进行处理,不能抛出空指针异常
fallbackThrowException:
policy: throwException #服务降级抛出的异常为CseException,降级时,用户需要捕获该异常做自己的逻辑
fallbackForce:
policy: mycustom
#熔断策略支持全局、微服务和方法级别
circuitBreaker:
Consumer:
springmvc:
codeFirst:
fallbackFromCache:
enabled: true #是否开启熔断
forceOpen: true #强制开启熔断
forceClosed: false #强制关闭熔断,和forceOpen互斥
sleepWindowInMilliseconds: 15000 #熔断时间,默认15000毫秒
requestVolumeThreshold: 20 #统计时间窗内最少请求次数,如果没有达到该请求次数不会进行熔断,即使失败率达到熔断要求
errorThresholdPercentage: 50 #失败率,统计时间窗内请求错误率,达到该限制后会进行熔断,默认50%
#负载均衡、路由策略,重试机制支持全局和微服务两个级别
loadbalance:
bservice:
retryEnabled: true #是否开启重试机制
retryOnSame: 1 #在同一个机器上重试次数,默认为0,重试需要保证可重入性、幂等性
retryOnNext: 2 #在另外实例上重试次数,默认为0,如果是无状态的请求,建议选择在下一个节点上行进行重试
retryHandler: default #重试handler,默认为default,对应DefaultLoadBalancerRetryHandler,也可以实现自己的重试机制。可选
transactionControl:
options:
tag0: value0 #过滤器的属性,到时候只选择实例也有同样的属性的实例
#分流策略,默认是简单的分流策略,选择properties包含filter的所有options的实例
policy: org.apache.servicecomb.loadbalance.filter.SimpleTransactionControlFilter
isolation: # 支持服务级别和全局
enabled: true #开启隔离机制
errorThresholdPercentage: 20 #隔离错误率
enableRequestThreshold: 20 #隔离门槛
singleTestTime: 10000 #隔离后有机会重试的时间
strategy:
name: RoundRobin # RoundRobin轮询、Random随机、WeightedResponse返回值权重、SessionStickiness会话粘滞,默认为RoundRobin
SessionStickinessRule: #当会话粘滞策略开启后生效
sessionTimeoutInSeconds: 30 #会话粘滞的时间,默认30s,可选
successiveFailedTimes: 5 #会话 粘滞最大错误数,默认5次,可选
references:
version-rule: 0+ #对所有服务的版本依赖范围
abcservice:
version-rule: 1.0.1+ #对特定的服务版本依赖范围
transport: rest #当服务端开启多种协议是,显示指定传输协议,默认为空,可设置为“”、rest、highway
executor:
default:
thread-per-group: 200 #同步开发模式下面的默认工作线程数
#数据中心,用于服务做亲缘性选择,优先调用本az服务
datacenter:
name: myDC #数据中心名称,
region: my-Region #数据中心区域,比如华北northchina、华南soutchchina
availableZone: my-Zone #数据中心可用取sz
isolation:
Consumer:
maxConcurrentRequests: 20