美文网首页
《八》、springcloud微服务——Zuul路由相关

《八》、springcloud微服务——Zuul路由相关

作者: 神奇作手 | 来源:发表于2019-07-28 10:53 被阅读0次

    一、概述

    1、是什么?

    Zuul包含了对请求的路由和过滤两个主要的功能:
      其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚会等功能的基础;
      Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。
    注意:Zuul服务最终还是会注册进Eureka

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

    2、能干吗?

    路由、过滤

    3、官网资料

       https://github.com/Netflix/zuul/wiki/Getting-Started-2.0

    二、路由基本配置

    1、新建 Module模块:microservicecloud-zuul-gateway-9527
    2、pom.xml文件修改
    (1)、修改内容
        <!-- zuul路由网关 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>    
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    
    (2)、完整内容
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                                 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>cn.smilexl.springcloud</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-zuul-gateway-9527</artifactId>
    
        <dependencies>
            <!-- zuul路由网关 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>    
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</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-netflix-hystrix</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <!-- 日常标配 -->
            <dependency>
                <groupId>cn.smilexl.springcloud</groupId>
                <artifactId>servicespringcloud-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.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    </project>
    
    
    3、application.yml文件
    server:
      port: 9527
      
    spring:
      application:
        name: microservicecloud-zuul-gateway
      
    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: microservicecloud
      company.name: www.smilexl.cn
      build.artifactId: $project.artifactId$
      build.version: $project.version$ 
          
    
    4、host文件修改

    位置:C:\Windows\System32\drivers\etc 下的host文件添加如下配置:
         127.0.0.1 myzuul.com

    5、主启动类:Zuul_9527_StartSpringCloudApp.java 添加@EnableZuulProxy注解
    package cn.smilexl.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
    
    @EnableZuulProxy
    @SpringBootApplication
    public class Zuul_9527_StartSpringCloudApp {
    
        public static void main(String[] args) {
            
            SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);
        }
    }
    
    6、启动测试

    (1)、先启动3个eureka集群
    (2)、一个微服务提供者:microservicecloud-provider-dept-8001
    (3)、一个路由:microservicecloud-zuul-gateway-9527


    (4)、测试:
         |--- 不用路由:http://localhost:8001/dept/get/1
         |--- 启用路由:http://myzuul.com:9527/microservicecloud-dept/dept/get/1

    三、路由访问映射规则

    1、对工程 microservicecloud-zuul-gateway-9527 进行相关的修改
    (1)、添加代理名称

       yml中添加如下内容:

    #代理名称 
    zuul:
      routes:
        mydept.serviceId: microservicecloud-dept
        mydept.path: /mydept/**
    

    此时存在的问题:

    (2)、原真实服务名忽略

       yml中添加如下内容:单个具体的

    #代理名称 
    zuul:
      ignored-services: microservicecloud-dept   #原真实服务名忽略
      routes:
        mydept.serviceId: microservicecloud-dept
        mydept.path: /mydept/**
    

       yml中添加如下内容:多个内容用 “ * ”

    #代理名称 
    zuul:
      ignored-services: "*"   #原真实服务名忽略
      routes:
        mydept.serviceId: microservicecloud-dept
        mydept.path: /mydept/**
    
    (3)、设置统一公共前缀

       yml中添加如下配置:

    #代理名称 
    zuul:
      prefix: /ll #统一公共前缀
      ignored-services: "*"   #原真实服务名忽略
      routes:
        mydept.serviceId: microservicecloud-dept
        mydept.path: /mydept/**
    

    此时访问路径变为:http://myzuul.com:9527/ll/mydept/dept/get/1

    (4)、最终的yml配置文件
    server:
      port: 9527
      
    spring:
      application:
        name: microservicecloud-zuul-gateway
      
    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 
        
    #代理名称 
    zuul:
      prefix: /ll #统一公共前缀
      ignored-services: "*"   #原真实服务名忽略
      routes:
        mydept.serviceId: microservicecloud-dept
        mydept.path: /mydept/**
    
    #点击超链接后显示信息   
    info:
      app.name: microservicecloud
      company.name: www.smilexl.cn
      build.artifactId: $project.artifactId$
      build.version: $project.version$ 
     
      
    

    相关文章

      网友评论

          本文标题:《八》、springcloud微服务——Zuul路由相关

          本文链接:https://www.haomeiwen.com/subject/tneurctx.html