server:
port: 8090
spring:
application:
name: springcloud-service-consume
eureka:
client:
service-url:
defaultZone: http://eureka8762.com:8762/eureka/,http://eureka8763.com:8763/eureka/
instance:
prefer-ip-address: true
springcloud-service-provider: #可以争对单个服务加配置
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule
ReadTimeout: 5000 #读取接口超时时间设置 如果是hystrix超时生效 则不会开始ribbon重试
ConnectTimeout: 4000
OkToRetryOnAllOperations: false # 对所有操作请求都进行重试 只对get请求重试
MaxAutoRetries: 2 # 对当前实例的重试次数 不包含第一调用
MaxAutoRetriesNextServer: 0 # 当前实例如果还是无响应则切换实例的重试次数
# ribbon是在调用的时候才会去创建RibbonClient
# 这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,很容易就会出现第一次访问会有报错的情况发生
eager-load:
enabled: true #开启Ribbon的饥饿加载模式 启动的时候就立即初始化
clients: springcloud-service-provider #指定需要饥饿加载的服务名
# 开启Feign的熔断功能
feign: #Feign的超时时⻓设置那其实就上⾯Ribbon的超时时⻓设置
hystrix:
enabled: true
#通过 Gzip 压缩算法,提升网络通信速度
compression:
request:
enabled: true #配置请求 GZIP 压缩
mime-types: text/xml,application/xml,application/json #配置压缩支持的 MIME TYPE
min-request-size: 512 #配置压缩数据大小的最小阀值,默认 2048
response:
enabled: true #配置响应 GZIP 压缩
#使用HttpClient替换默认的HttpURLConnection HttpClient自带连接池 连接池能提升性能
httpclient:
enabled: true
max-connections: 100 #连接池个数,默认200
max-connections-per-route: 30 #单个路径的最大连接数,默认50
# 针对超时这⼀点,当前有两个超时时间设置(ribbon/hystrix),熔断的时候是根
# 据这两个时间的最⼩值来进⾏的,即处理时⻓超过最短的那个超时时间了就熔断进⼊回退降级逻辑
hystrix:
command:
default:
execution:
# enabled设置为true,ribbon,hystrix都有对请求超时的控制权
# 如果enabled设置为false,则请求超时交给ribbon控制
# timeout:
# enabled: true
isolation:
#线程池隔离和信号量隔离的区别 线程池:请求并发量大,并且耗时长 信号量: 请求并发大耗时短
# THREAD: THREAD #必须为大写
thread:
# Hystrix的熔断时间必须大于Ribbon超时时间
# 5000 + 10000 = 15000
# todo 超时设置 ReadTimeout+(MaxAutoRetries * ReadTimeout)
timeoutInMilliseconds: 5000 #该配置需要比ribbon超时时间长
# springboot中暴露健康检查等断点接⼝
management:
endpoints:
web:
exposure:
include: "*"
# 暴露健康接⼝的细节
endpoint:
health:
show-details: always
logging:
level:
# Feign⽇志只会对⽇志级别为debug的做出响应
com.lx.consume.service.UserFacde: debug
// Feign的⽇志级别(Feign请求过程信息)
// NONE:默认的,不显示任何⽇志----性能最好
// BASIC:仅记录请求⽅法、URL、响应状态码以及执⾏时间----⽣产问题追踪
// HEADERS:在BASIC级别的基础上,记录请求和响应的header
// FULL:记录请求和响应的header、body和元数据----适⽤于开发及测试环境定位问题
@Bean
Logger.Level feignLevel(){
return Logger.Level.BASIC;
}