• springcloud 入门 7 (zuul路由网关)


    Zuul简介:

      Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。

        zuul有以下功能:

        • Authentication
        • Insights
        • Stress Testing
        • Canary Testing
        • Dynamic Routing
        • Service Migration
        • Load Shedding
        • Security
        • Static Response handling
        • Active/Active traffic management

    Zuul搭建:

      第一步:引入相应的pom

        

      第二步:在启动类上启动zuul

        

      第三步:配置文件配置,向注册中心注册。自身做一个客户端。

        

      第四步:启动测试:  六个服务以此启动,最好先启动服务端,再启动其他客户端

        

        

    zuul过滤:

      zuul主要是路由和过滤,上面已经介绍路由,下面介绍过滤。在过滤中类似servlet的过滤器,拦截器。在修改的时候可以做一些二次开发:

     1 package com.huhy.springcloud.filter;
     2 
     3 import com.netflix.zuul.ZuulFilter;
     4 import com.netflix.zuul.exception.ZuulException;
     5 import org.springframework.stereotype.Component;
     6 
     7 /**
     8  * @author : huhy on 2018/9/4.
     9  * @Project_name:springcloud_self
    10  * @LOCAL:com.huhy.springcloud.filter
    11  * @description:{todo}
    12  */
    13 @Component
    14 public class MyFilter extends ZuulFilter {
    15     /**
    16      * @author huhy
    17      * @ClassName:MyFilter
    18      * @date 2018/9/4 13:58 
    19      * @Description: 返回一个字符串代表过滤器的类型
    20      */
    21     @Override
    22     public String filterType() {
    23         /**
    24          *  pre:    路由之前
    25          *  routing:路由之时
    26          *  post:   路由之后
    27          *  error:  发送错误调用
    28          * */
    29         System.out.println("filterType--------------");
    30         return "pre";
    31     }
    32     /**
    33      * @author huhy
    34      * @ClassName:MyFilter
    35      * @date 2018/9/4 13:59 
    36      * @Description: 过滤顺序
    37      */
    38     @Override
    39     public int filterOrder() {
    40         System.out.println("filterOrder--------------");
    41         return 0;
    42     }
    43     /**
    44      * @author huhy
    45      * @ClassName:MyFilter
    46      * @date 2018/9/4 13:59 
    47      * @Description: 这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
    48      */
    49     @Override
    50     public boolean shouldFilter() {
    51         System.out.println("shouldFilter--------------");
    52         return true;
    53     }
    54     /**
    55      * @author huhy
    56      * @ClassName:MyFilter
    57      * @date 2018/9/4 13:59 
    58      * @Description:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
    59      */
    60     @Override
    61     public Object run() throws ZuulException {
    62         System.out.println("run--------------");
    63         return "run";
    64     }
    65 }

    注意:

      1>feign 和 ribbon也是负载,那么和zuul有啥侧重点呢?

        ribbon的负载在于相同服务之间的负载,zuul多用于在多个服务之间传递请求。 zuul 多以集群的形式存在。   

      2> zuul在springcloud充当的角色(借用网上一张图)

        

  • 相关阅读:
    win10+vs2010 安装Silverlight 安装说明
    常用小方法
    .net 技术学习进阶
    NetMQ——推拉模式 Push-Pull
    NetMQ使用——发布订阅模式 Publisher-Subscriber
    NetMQ使用——请求响应模式 Request-Reply
    跨终端Web
    七大排序算法
    JDK线程池
    Redis为什么这么快
  • 原文地址:https://www.cnblogs.com/huhongy/p/9584101.html
Copyright © 2020-2023  润新知