一.降级概念
当访问量剧增,服务出现问题的时候,需要做一些处理,比如服务降级。
服务降级就是将某些服务停掉或者不进行业务处理,释放资源维持主要服务的功能
举例:某电商网站在搞活动的时候,活动期间压力太大,如果在进行下去,整个系统有可能崩掉,
这个时候可以释放掉一些资源,将一些不那么重要的服务采取降级措施,比如登录,注册,登录
服务停掉之后,就不会有更多的用户抢购,同时也可以释放一些资源,登录,注册服务崩掉也不会影响商品抢购,
二.实现方式
1:服务降级有很多种方式,最好的方式就是利用Docker来实现,当需要对某个服务进行降级时,可以直接
将这个服务所有的容器停掉,需要恢复的时候重新启动就可以了。
2:还有就是在API网关层进行处理,当某个服务被降级了,前端过来的请求就直接拒绝掉,不往内部服务转发,将流量档回去。
三 实现思路
主要逻辑在过滤器的run方法中,通过RequestContext获取即将路由的服务ID;
通过配置信息获取降级的服务信息,如果当前路由的服务在其中,就直接拒绝,返回对应的信息让客户端做对应的处理
当需要降级的时候,直接在springcloud config的后台改一下配置就可以马上生效,
当然也可以做成自动的,比如监控某些指标,流量,负载等,
当达到某些指标后就自动触发降级
代码实现 jwxt-zuul
application.yml
down:
service: jwxt-learner
filter
import com.alibaba.fastjson.JSON;
import com.jwxt.response.Resu