springcloud之zuul的配置及优化

zuul 是netflix开源的一个网关服务器,本质就是个servelet服务,提供了代理、路由、过滤三大功能,作为网关可以说非常适合不过了。
那么一下就展示一下我自己工作中zuul的配置:

1、在属性文件配置服务器的代理配置
(1)、通过service-id配置
#代理服务(其中zuul.routes后面的test1必须唯一)
#zuul路由到目标路径的时候是否要加前缀,fase 要加前醉, true去除前缀   (备注:默认为true)
zuul.routes.test1.stripPrefix=false
#请求zuul的时候,如果匹配到test-service就会执行此配置的内容
zuul.routes.test1.path=/test-service/**
#Eureka中的serviceId,zuul会将此请求负载均衡代理到serviceId为test-service的服务器
zuul.routes.test1.service-id=test-service
(2)、通过ip地址配置
#代理服务(其中zuul.routes后面的test2必须唯一)
#zuul路由到目标路径的时候是否要加前缀,fase 要加前醉, true去除前缀   (备注:默认为true)
zuul.routes.test2-service.stripPrefix=false
#请求zuul的时候,如果匹配到test-service就会执行此配置的内容
zuul.routes.test2-service.path=/test-service/**
#zuul会将请求负载均衡到以下服务器
test.ribbon.listOfServers:10.148.15.74:8770,10.148.15.74:8771
2、注册到eureka的配置
#指定服务注册中心的地址
eureka.client.service-url.defaultZone=http://xxxxx:xx/eureka/eureka/
#注册服务的时候使用服务的ip地址
eureka.instance.prefer-ip-address=true
#注册到eureka的名称,
eureka.instance.instance-id=${spring.application.name}:${server.port}
3、 tomcat配置
#tomcat接受排队的最大数量(当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100)
server.tomcat.accept-count=1000  
#tomcat最大工作线程数量(tomcat起动的最大线程数,即同时处理的任务个数,默认值为200)
server.tomcat.max-threads=1000 
#tomcat最小工作线程数量
server.tomcat.min-spare-threads=64
#tomcat处理的最大连接数
server.tomcat.max-connections=2000
4、ribbon配置
#开启zuul重试机制(解决feign和zuul超时, 建议不实用)
zuul.retryable=true
#对当前服务的重试次数
ribbon.MaxAutoRetries=1
#切换相同Server的次数
ribbon.MaxAutoRetriesNextServer=2
#每个host的最大连接数
ribbon.MaxConnectionPerHost=500
#ribbon的最大连接数
ribbon.MaxTotalConnections=1000
#ribbon的最大工作线程数
ribbon.PoolMaxThreads=1000
5、zuul隔离机制

zuul有两种隔离机制 线程池隔离和信号量隔离,从我的测试来看,线程池隔离机制显然要好与信号量隔离机制

(1)先看看信号量隔离,信号量默认值是100,也就是当请求数量大于100,就会返回500的错误
#使用信号量提高zuul性能
zuul.semaphore.max-semaphores=5000
# 使用okhttp方式请求,正常来说okhttp比较速度快一点
zuul.okhttp.enabled=true 
#zuul启动会去注册中心找服务 预先去注册中心找服务然后再加载 速度会快点
ribbon.eager-load.clients=test1-service,test2-service,test3-service
(2)使用线程池隔离,线程池不是越大越好的,如果特别大那消峰效果比较好,但是响应的请求的等待时间也会加大
#开启线程池隔离机制
zuul.thread-pool. use-separate-thread-pools=true
#制定一个线程池前缀
zuul.thread-pool. thread-pool-key-prefix=test
#线程池核心数量
hystrix.threadpool.default.coreSize=50
#线程池最大数量
hystrix.threadpool.default.maximumSize=1000
6、配置压缩
# 配置请求GZIP压缩
feign.compression.request.enabled=true
# 配置响应GZIP压缩
feign.compression.response.enabled=true
# 配置压缩支持的MIME TYPE
feign.compression.request.mime-types=text/xml,application/xml,application/json
# 配置压缩数据大小的下限
feign.compression.request.min-request-size=2048
7、自定义超时时间
#以下配置ribbon的超时时间,如果路由方式是serviceId那么ribbon超时会起效果,否则zuul.host会起效果
#ribbon转发后台服务的最大读取时间(路由方式是serviceId)
ribbon.ReadTimeout=20000
#ribbon转发后台服务的最大连接时间(路由方式是serviceId)
ribbon.ConnectTimeout=20000
#路由方式是ip地址的时候,此配置会起效果
zuul.host.connect-timeout-millis=20000
zuul.host.socket-timeout-millis=20000

#如果你在zuul配置了熔断fallback的话,熔断超时也要配置,不然如果你配置的ribbon超时时间大于熔断的超时,那么会先走熔断,相当于你配的ribbon超时就不生效了
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=50000
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值