zoukankan      html  css  js  c++  java
  • Zuul的使用,路由访问映射规则

    一、Zuul的介绍

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

          其中路由功能负责将外部请求转发到具体的微服务实力上,是实现外部访问统一入口基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

      Zuul和eureka进行整合,将Zuul自身注册到Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得的。

    注意:Zuul最终还是会注册到Eureka。

    提供=代理+路由+过滤三大功能

    二、路由的基本配置

    1、新建工程:microservicecloud-zuul-gateway-9527

    2、pom.xml文件添加依赖的jar

         <dependencies>
            <!-- 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>
            <!-- actuator监控 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!-- hystrix容错 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <!-- 日常标配 -->
            <dependency>
                <groupId>com.atguigu.springcloud</groupId>
                <artifactId>microservicecloud-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jetty</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
            <!-- 热部署插件 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>

    3、yml文件的配置

    server:
      port: 9527
    
    spring:
      application:
        name: microservicecloud-zuul-gateway
    
    # zuul注册到Eureka
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
      instance:
        instance-id: gateway-9527.com
        prefer-ip-address: true
    
    info:
      app.name: yufeng-microcloud
      company.name: www.yufeng.com
      build.artifactId: $project.artifactId$
      build.version: $project.version$

    4、hosts的修改

    (1)打开 C:WindowsSystem32driversetchosts 文件;

    (2)增加:127.0.0.1 myzuul.com

    5、主启动类,添加@EnableZuulProxy

    @SpringBootApplication
    @EnableZuulProxy
    public class Zuul_9527_StartSpringCloudApp
    {
        public static void main(String[] args)
        {
            SpringApplication.run(Zuul_9527_StartSpringCloudApp.class);
        }
    }

    6、测试

    (1)启动三个eureka集群, 一个microservicecloud-provider-dept-8001,启动路由网关微服务;

    (2)不用路由和启动路由的结果一样;

    不用路由:http://localhost:8001/dept/get/2

    启用路由:http://myzuul.com:9527/microservicecloud-dept/dept/get/2          

     三、路由访问映射规则

     以上使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2 访问,则暴露出了调用的微服务名为 microservicecloud-dept;为了不暴露出微服务的真正名称,使用路由访问映射;

    1、在yml文件中增加路由映射

    # 路由映射
    zuul:
      routes:
        mydept:
          serviceId: microservicecloud-dept
          path: /mydept/**

    serviceId:映射的服务名;path:映射成为的路径;

    在yml修改之前使用:http://myzuul.com:9527/microservicecloud-dept/dept/get/2  访问;

    在yml修改之后使用:http://myzuul.com:9527/mydept/dept/get/2  访问;

    2、此时使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2  和 http://myzuul.com:9527/mydept/dept/get/2  都可以成功的调用该接口,还是会暴露调用的微服务名为microservicecloud-dept;所以需要去让使用 http://myzuul.com:9527/microservicecloud-dept/dept/get/2  链接不能够访问;

    (1)因此,需要在yml文件中增加原服务的忽略:

    # 路由映射
    zuul:
      ignored-services: microservicecloud-dept
      routes:
        mydept:
          serviceId: microservicecloud-dept
          path: /mydept/**

    ignored-services:特别注意此处的配置。通过配置此选项,限制不能通过访问服务名去访问微服务

    如果想把其他很多的微服务都通过配置忽略掉真实访问路径则直接使用 ”*” 来代替。

    (2)重启微服务

    <1> 使用原路径访问报错,http://myzuul.com:9527/microservicecloud-dept/dept/get/2 

     <2> 使用路由映射路径可以正常访问:http://myzuul.com:9527/mydept/dept/get/2

     (3)在实际的使用时候,有很多个服务器需要限制不能通过服务名去访问;则在yml做如下的修改:

    # 路由映射
    zuul:
      ignored-services: "*"
      routes:
        mydept:
          serviceId: microservicecloud-dept
          path: /mydept/**

    测试结果与上面的结果一样;

    3、设置统一公共前缀

    (1)修改yml文件,如下所示

    # 路由映射
    zuul:
      prefix: /yufeng
      ignored-services: "*"
      routes:
        mydept:
          serviceId: microservicecloud-dept
          path: /mydept/**

    (2)测试

    <1> 在浏览器中打开:http://myzuul.com:9527/mydept/dept/get/2,报错如下:

     <2> 在浏览器中打开:http://myzuul.com:9527/yufeng/mydept/dept/get/2,可以正常访问;

  • 相关阅读:
    phpexcel 相关知识
    php 相关的设置
    linux md5sum 常用用法
    mysql 修改group_concat的限制(row 20000 was cut by group_concat())
    mysql设置最大连接数 max_connections
    Mysql 需要修改的一些配置
    mysql设置远程访问,解决不能通过ip登录的问题(MySQL Error Number 2003,Can't connect to MySQL server )
    mysql 用户权限管理的粗略认识
    文字图片在wps中清晰化方法
    Linux 如何释放Hugepage 占用的内存
  • 原文地址:https://www.cnblogs.com/yufeng218/p/11495075.html
Copyright © 2011-2022 走看看