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;
}
}

本文深入探讨了微服务架构中四个核心组件的功能与实现:Ribbon负载均衡、Hystrix服务熔断与降级、Feign声明式HTTP客户端及Zuul路由网关。通过具体示例,阐述了这些组件如何提升系统的稳定性和可维护性。
421

被折叠的 条评论
为什么被折叠?



