侧边栏壁纸
博主头像
千异博主等级

学无止境,学以致用,志存高远!

  • 累计撰写 29 篇文章
  • 累计创建 26 个标签
  • 累计收到 0 条评论

微服务——路由网关Zuul

千异
2022-04-29 / 0 评论 / 2 点赞 / 499 阅读 / 1,255 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

什么是Zuul?
Spring Cloud Zuul 是整合Netflix公司的 Zuul开源项目(官方:https://github.com/Netflix/zuul);

Zuul 包含了对请求路由和校验过滤两个最主要的功能:

  1. 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,
    • 客户端请求网关/api/product,通过路由转发到 product 服务
    • 客户端请求网关/api/order,通过路由转发到 order 服务
  2. 而过滤功能则负责对请求的处理过程进行干预,是实现请求校验等功能的基础。Zuul和Eureka进行整合,将 Zuul自身注册为Eureka服务治理中的服务,同时从Eureka 中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

使用方式:

  1. 新建路由网关模块,启动类添加@EnableZuulProxy注解
  2. yml文件中配置
zuul:
  routes:
    provider-product:    # 路由名称,名称任意,路由名称唯一
      path: /product/** # 访问路径
      #配置之后访问http://localhost:7001/microservice-product/product/get/1和访问http://localhost:7001/product/get/1相同
      serviceId: microservice-product # 指定服务ID,会自动从Eureka中找到此服务的ip和端口
      stripPrefix: false # 代理转发时去掉前缀,false:代理转发时不去掉前缀 例如:为true时请求 /product/get/1,代理转发到/get/1

    # 如果多个服务需要经过路由,则同povider-product方式继续添加,例如:
    #provider-order:
      #path: /order/**
      #serviceId: microservice-order
      #stripPrefix: false
  1. 自定义过滤器
@Component //一定不要少了
public class LoginFilter extends ZuulFilter {
    /**
     * 返回值可取:
     * - pre:在请求路由之前执行
     * - route:在请求路由时调用
     * - post:请求路由之后调用, 也就是在route和error过滤器之后调用
     * - error:处理请求发生错误时调用
     * @return
     */
    @Override
    public String filterType() {
        return "pre"; //
    }

    @Override
    public int filterOrder() {
        return 1; //返回值是int,会根据返回值进行定义过滤器的执行顺序,值越小优先级越大
    }

    @Override
    public boolean shouldFilter() {
        return true; //当前过滤器是否被执行,true则执行,false不执行
    }

    //定义 过滤功能
    @Override
    public Object run() throws ZuulException {


    }
}
2
博主关闭了所有页面的评论