zoukankan      html  css  js  c++  java
  • springcloud--zuul 网关

    路由转发

    创建项目,zuul需要注册进eureka中,所以pom依赖中要加这两个依赖

    <!-- zuul路由网关 -->
    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-zuul</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-eureka</artifactId>
    		</dependency>

    启动类上添加@EnableZuulProxy注解,启用zuul,

    最后在配置文件中将zuul项目注册到eureka中心,

    eureka:
      client: #客户端注册进eureka服务列表内
        service-url: 
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/      
      instance:
        instance-id: microservicecloud-zuul-gateway 
        prefer-ip-address: true     #访问路径可以显示IP地址
    
    #注册到Eureka服务的服务名
    spring:
      application:
        name: zuul-service7103
    
    zuul:
      routes:
        client-a:
          path: /client-a/**
          serviceId: EUREKA-CLIENT  #这里是写其他实例注册到Eureka的名称,不会写各实例的instanceId
        clietn-b:
          path: /client-b/**
          serviceId: eurake-client1-7003

    最后,启动eureka,启动服务提供者,zuul项目,不通过网关访问

    http://localhost:8001/dept/get/1,可以直接访问,

    通过网关:http://localhost:9003/client-a/getData

    zuul会把/client-a/开头的请求都转发到EUREKA-CLIENT服务,并且,zuul默认是使用了ribbon负载均衡。

    服务过滤

     zuul还可以过滤请求,做一些安全验证

    需要创建一个类继承ZuulFilter,重写其中的方法

    @Component
    public class MyFilter extends ZuulFilter {
    
        /**
         * 返回一个字符串的过滤器类型,有以下四种
         * pre: 路由之前
         * routing:路由时
         * post:路由之后
         * error: 发送错误调用
         *
         * @return
         */
        @Override
        public String filterType() {
            return null;
        }
    
        /**
         * 过滤顺序,返回的数据越小,该过滤器优先生效,优先过滤请求
         * @return
         */
        @Override
        public int filterOrder() {
            return 0;
        }
    
        /**
         * 是否需要启用该过滤器,可以按情况是否启用
         * @return
         */
        @Override
        public boolean shouldFilter() {
            return false;
        }
    
        /**
         * 这里写过滤器的过滤逻辑
         * @return
         * @throws ZuulException
         */
        @Override
        public Object run() throws ZuulException {
            return null;
        }
    }
  • 相关阅读:
    可能是全网最详细的express--middleware
    带你学Node系列之express-CRUD
    简单聊聊ES6-Promise和Async
    Node学习图文教程之express重写留言本案例
    Node.js学习(第四章:初见express)
    彻底弄懂ES6中的Map和Set
    全网最easy的better-scroll实现上拉加载和下拉刷新
    Node中require第三方模块的规则
    canvas实现酷炫气泡效果
    Node.js实现用户评论社区(体验前后端开发的乐趣)
  • 原文地址:https://www.cnblogs.com/labtabhub/p/12164181.html
Copyright © 2011-2022 走看看