Zuul+Hystrix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zuul+Hystrix相关的知识,希望对你有一定的参考价值。
参考技术A 1、在Zuul的jar包中包含了Hystrix的jar包 ,所以我们不需要在项目中添加Hystrix的坐标依赖a.创建项目,配置pom.xml文件,配置zuul的依赖
b.修改application.properties/yml全局配置文件,配置应用名,端口、注册中心地址等
c.修改启动类,添加 @EnableZuulProxy 开启代理服务
d.启动测试结果
2、在网关中实现对服务降级处理
a.创建项目,添加依赖...修改application.properties/yml配置文件
b.编写fallback方法类,实现ZuulFackProvider接口重写方法
c.人为修改Provider或让Provider出现意外
d.访问测试就可以看到托底数据
3、网关限流优化
常见优化参数:
zuul.ratelimit.enabled:此参数标识是否开启全局限流
zuul.ratelimit.repository:此参数标识配置存储方式
zuul.ratelimit.policies.ServiceId.refresh-interval:标识配置多少秒后恢复正常(多少秒内触发异常)
zuul.ratelimit.policies.serviceId.limit:标识在多少秒内对服务请求多少次触发异常,进行限流保护
zuul.ratelimit.policies.serviceId.quota:单位时间内允许访问的总时间
zuul.ratelimit.policies.serviceId.type:设置限流策略的类型
4、Zuul性能调优—网关的2层超时调优
Zuul底层采用了Ribbon和hystrix来通信
Ribbon默认超时是5秒
Hystrix默认情况下是线程池隔离,超时时间为1000ms
注意:Ribbon超时必须小于hystrix的超时时间
修改Provider
消费者中的application.properties/yml配置文件
常用的配置管理解决方案的缺点
1.硬编码
2.配置参数在properties/yml文件中(需要重新打包和重启服务器)
3.配置参数写在xml文件中(需要重新打包和重启服务器)
· 由于常用的配置管理有很大的缺点,故sprin cloud config采用了集中式的配置中心来管理每个服务的配置信息
Spring cloud config 配置中心:在微服务分布式系统中,采用服务端和客户端来提供可扩展的配置服务,配置中心 负责管理所有的服务和各种环境配置文件 ,配置服务中心默认采用 Git 的方式存储配置文件,因此我们很容易部署修改, 有助于对环境配置进行版本管理
Spring Cloud Config 配置中心解决的问题
Spring cloud config 配置中心,解决了微服务配置的 中心化、版本控制、平台独立、语言独立等问题 ,其特性如下:
1.提供服务端和客户端支持(spring cloud config server和spring cloud config client)
2.集中式管理分布式环境下的应用配置
3.基于Spring环境,无缝与Spring应用集成
4.可用于任何语言开发的程序
5.默认实现基于Git仓库,可以进行版本管理
1.创建项目,修改Pom.xml配置文件,添加Config-Server的依赖
2.修改application.properties/yml配置文件,添加GitHub/Gitee相关参数
3.在远程仓库中配置测试文件
4.启动类和项目结构
5.测试结果
Git服务器会从远程git拉取配置文件,并存入到本地git文件库,当远程git不可用时,会从本地git文件库拉取配置信息
详情参考: SpringCloudConfig配置中心原理以及环境切换
1.编写配置中心客户端
a.pom.xml文件
b.配置文件:注意 Config-Client的配置文件命名—>bootstrap.properties/yml
c.编写方法访问Config-server并返回数据
d.启动类和项目结构
e.访问测试
1.在此次热部署中需要通过HttpClient工具类发送Post请求方式来刷新
application.properties/yml配置文件
刷新请求的URL
借助工具类或window下的命令向指定URL发送Post请求
注意: 在SpringIOC中,实例化都为单例模式,如果我们使用热部署则无法使用
所以需要使用@RefreshScope刷新作用域
修改启动类和项目结构
启动Config-Server和Config-client进行测试,然后在Git远程仓库修改配置文件信息,不重启应用,但是通过工具类向刷新的URL发送Post请求,然后再访问
发送Post请求
数据已经改变
以上是关于Zuul+Hystrix的主要内容,如果未能解决你的问题,请参考以下文章