发表于: 2020-07-03 23:48:14
1 1661
今天完成的事情:
在微服务架构中,一个请求需要调用多个服务是非常常见的。
但运行过程中,如果某个较底层的服务如果出现故障,会导致连锁故障。
当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开,用来避免连锁故障。
fallback方法可以直接返回一个固定值。只返回固定的结果。
ribbon 熔断处理
启动类加注解
controller加注解
断开客户端 熔断处理结果

fogin 熔断处理
加入熔断处理的类
断开一个客户端连接
搭建了熔断处理仪表盘

具体含义
zuul路由转发
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。
#找到注册中心的地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
#当前项目准备部署的端口
server:
port: 8769
#当前项目的服务器名称
spring:
application:
name: service-zuul
#配置网关路由
zuul:
routes:
api-a:
#/api-ribbon/**请求转发到service-ribbon服务器
path: /api-ribbon/**
serviceId: service-ribbon
api-b:
#/api-feign/**请求转发到service-feign服务器
path: /api-feign/**
serviceId: service-feign
启动类加上
这这样访问
api-ribbon/**
api-fegin/**
就会转发给 ribbon (服务端负载均衡/熔断等功能) 和 fegin(同)处理
zuul还有拦截器的功能
一个完整的拦截器 需要继承zuulFilter接口
实现所有的方法
方法具体的含义 代码上方已注释
// filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
// pre:路由之前
// routing:路由之时
// post: 路由之后
// error:发送错误调用
// filterOrder:过滤的顺序,越小优先级越高
// shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
// run:过滤器的具体逻辑。
//
@Component
public class SecurityFilter extends ZuulFilter {
@Override
public String filterType() {
//pre路由之前
//routing:路由之时
// post: 路由之后
// error:发送错误调用
return "pre";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
//true表示拦截
return true;
}
@Override
public Object run() {
//获取Request与Response接口对象
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String securityToken = request.getParameter("token");
if (securityToken == null) {
ctx.setSendZuulResponse(false);
//状态码
ctx.setResponseStatusCode(401);
try {
//返回响应
ctx.getResponse().getWriter().write("request failure , you do not have security token ");
} catch (Exception e) {
}
}
//return null 表示直接越过此Filter
return null;
}
}
如果你请求头不带token
就会返回错误 401 自定义错误
如果带token 就跳过此拦截器
明天计划的事情:
完成剩余模块及任务
评论