SpringCloud 熔断器,网关等个人总结及项目应用

基于我自己小项目的学习

熔断器Hystrix

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障, 进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应。
Hystrix 能使你的系统在出现依赖服务失效的时候,通过隔离系统所依赖的服务,防 止服务级联失败,同时提供失败回退机制,更优雅地应对失效,并使你的系统能更快地 从异常中恢复。

上手
Feign本身支持Hystrix,不需要额外引入依赖
先创建一个调用接口的实现类,以后可以在里面记录一下日志
在这里插入图片描述
再修改调用接口的@FeignClient注解,在value后面加一个fallback=实现类.class.
在这里插入图片描述
在application.yml中将熔断器打开
在这里插入图片描述

网关Zuul

转发器
在这里插入图片描述
管理后台微服务的网关
1导入eureka-client和zuul的依赖
2配置application.yml
在这里插入图片描述
3写启动类
加入@EnableZuulProxy的注解
在这里插入图片描述
再次访问的时候需要访问网关的端口号加要去什么微服务就去加哪个前缀

过滤器
创建一个过滤器 继承ZuulFilter,实现它的四个方法
1 filterType方法:表示过滤器的类型,return “pre”表示在运行前过滤,一般在之前过滤
return “post”表示在运行后过滤
route :在路由请求时候被调用
post :在route和error过滤器之后被调用 error :处理请求时发生错误时被调用
在这里插入图片描述
2 filterOrder方法:表示过滤器的执行顺序,因为可以写很多个过滤器,然后按照这个顺序执行 return 0;表示最先执行。
在这里插入图片描述
3 shouldFilter方法,表示当前过滤器使用不使用
在这里插入图片描述
4 run方法,里面写过滤器要执行的操作,return 任何object的值都表示继续执行
在这里插入图片描述

千万别忘了将过滤器扔容器中,加@Component

注意,Zuul过滤器会丢弃token头信息的问题

**客户所用的web网关,**一般只用于转发,毕竟人家只想上来看看,不登录也可以
人家传过来的token,转发给各个微服务,需要验证的通过自己的拦截器去验证吧。
但是管理员的manager网关,必须进行验证。

web网关的过滤器的run方法:
仅仅转发token,因为是在这丢失token,把他找回
1先得到request上下文
2得到request域
3再得到请求头信息中的叫“Authorization” 的那行头信息(和之前生成token的相同)
4判断头信息是否为空
5不为空就转发头信息
在这里插入图片描述
后台manager网关
要验证token,记得在application.yml中加入jwttoken的key值
其实直接转发也好,这就是双重验证吧,更加安全,先把杂七杂八的过滤一下
在这里插入图片描述
记得在启动类中将jwt工具注入到Spring容器中
在这里插入图片描述
在manager网关的过滤器中自动注入
在这里插入图片描述
在run方法中先得到头信息
在这里插入图片描述
判断角色
在这里插入图片描述
403 权限不足,给汉字提示就要给编码格式utf-8
json 的格式为 application/json
不记得了就去tomcat的web.xml中找
在这里插入图片描述
注意!网关转发其实有两次请求,第一次是他内部的请求,请求转发,这个肯定是不带头信息的,如果不对他特殊处理,一定就转发失败了,这个请求名字叫OPTIONS,碰到他就直接放行
在这里插入图片描述
还有人家如果本来就是来登录的,你还要求人家有admin权限,就不切实际了,
所以对登录方法也得特殊处理
包含login的路径,返回在url的下标,没有就返回0
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值