1、什么是 Ribbon
@LoadBalance注解开启负载均衡
(没开启负载均衡前)
(开启之后)
2、Hystrix
雪崩问题
(解决雪崩问题)
线程隔离、服务熔断
(hystrix之服务降级)
@EnableCircuitBreaker //开启熔断器
(hystrix之熔断)
@HysteixCommaand //声明熔断的方法
3、feign
@EnabelFeilClients //启用feign组件
4、Zuul
@EnableZuulProxy //开启路由代理
(Zuul过滤器)
(Zull过滤生命周期)
package com.huke.huzuul.filter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpStatus;
import javax.servlet.http.HttpServletRequest;
public class LoginFiltet extends ZuulFilter {
/**
* 过滤器的类型 : pre route post error
* @return
*/
@Override
public String filterType() {
return "pre";
}
/**
* 执行的优先级 越小优先级越高
* @return
*/
@Override
public int filterOrder() {
return 10;
}
/***
* 是否执行run()方法
* @return
*/
@Override
public boolean shouldFilter() {
return true;
}
/**
* 编写过滤器的业务逻辑
* @return
* @throws ZuulException
*/
@Override
public Object run() throws ZuulException {
//初始化context的上下文 不是servlet和getCurrentContext()
RequestContext requestContext = RequestContext.getCurrentContext();
//获取request对象
HttpServletRequest request = requestContext.getRequest();
//获取参数
String token = request.getParameter("token");
if(StringUtils.isNotEmpty(token)){
//拦截不转发请求
requestContext.setSendZuulResponse(false);
//相应状态码
requestContext.setResponseStatusCode(HttpStatus.SC_UNAUTHORIZED);
requestContext.setResponseBody("error");
}
返回值为null 就代表过滤器什么都不做
return null;
}
}