zoukankan      html  css  js  c++  java
  • 8、Spring Cloud Zuul

    1.Zuul简介

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

      路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。

      过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。

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

      注:Zuul服务最终还是会注册进Eureka

      Zuul提供代理、路由、过滤三大功能。

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

    2.Zuul配置

     

    (1).创建工程

      新建Module模块microservicecloud-zuul-gateway-9527

     

     

    (2).配置pom

    [1].修改部分

    <!-- 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>

    [2].完整部分

    <?xml version="1.0" encoding="UTF-8"?>

    <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">

        <parent>

            <artifactId>microservicecloud</artifactId>

            <groupId>com.hosystem</groupId>

            <version>1.0-SNAPSHOT</version>

        </parent>

        <modelVersion>4.0.0</modelVersion>

     

        <artifactId>microservicecloud-zuul-gateway-9527</artifactId>

        <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>

     

    </project>

    (3).applicaiton.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: hosystem-microcloud

      company.name: www.hosystem.com

      build.artifactId: $project.artifactId$

      build.version: $project.version$

    (4).修改hosts

    127.0.0.1  myzuul.com

     

    (5).主启动类

      创建主启动类Zuul_9527_StartSpringCloudApp,并添加注解@EnableZuulProxy.

    package com.hosystem.springcloud;

     

    import org.springframework.boot.SpringApplication;

    import org.springframework.boot.autoconfigure.SpringBootApplication;

    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

     

    @SpringBootApplication

    @EnableZuulProxy

    public class Zuul_9527_StartSpringCloudApp

    {

        public static void main(String[] args)

        {

            SpringApplication.run(Zuul_9527_StartSpringCloudApp.class, args);

        }

    }

    (6).启动项目

    [1].启动eureka7001、eureka7002、eureka7003

      启动microservicecloud-eureka-7001、microservicecloud-eureka-7002、microservicecloud-eureka-7003

     

    [2].启动provider8001

      启动microservicecloud-provider-dept-8001

     

    [3].启动zuul9527

      启动microservicecloud-zuul-gateway-9527

     

    (7).测试

    [1].未启用路由

    http://localhost:8001/dept/get/2

     

    [2].启动路由

    http://myzuul.com:9527/microservicecloud-dept/dept/get/2

     

    3.Zuul路由访问映射规则

     

    (1).修改application.yml

      修改部分:

    zuul:

      routes:

        mydept.serviceId: microservicecloud-dept

        mydept.path: /mydept/**

      完整部分:

    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:

      routes:

        mydept.serviceId: microservicecloud-dept

        mydept.path: /mydept/**

     

    info:

      app.name: hosystem-microcloud

      company.name: www.hosystem.com

      build.artifactId: $project.artifactId$

      build.version: $project.version$

      访问效果

    #之前访问的时候通过'microservicecloud-dept‘

    http://myzuul.com:9527/microservicecloud-dept/dept/get/2

     

    #之后访问的时候通过'mydept'

    http://myzuul.com:9527/mydept/dept/get/1

      出现的问题,通过'microservicecloud-dept‘或者'mydept'都可以访问。如何限制只允许'mydept'访问,而'microservicecloud-dept'访问失败呢?具体解决方法如下,

    #解决单个的时候指定具体的servideId

    #如果想要解决多个的时候可以使用   "*"

    zuul:

      ignored-services: microservicecloud-dept

      routes:

        mydept.serviceId: microservicecloud-dept

        mydept.path: /mydept/**

     

      统一公共前缀

    zuul:

      prefix: /hosystem

      ignored-services: "*"

      routes:

        mydept.serviceId: microservicecloud-dept

        mydept.path: /mydept/**

     

      完整的applicaiton.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: /hosystem

      ignored-services: "*"

      routes:

        mydept.serviceId: microservicecloud-dept

        mydept.path: /mydept/**

     

    info:

      app.name: hosystem-microcloud

      company.name: www.hosystem.com

      build.artifactId: $project.artifactId$

      build.version: $project.version$

    参考文档:

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

  • 相关阅读:
    leetcode教程系列——Binary Tree
    《Ranked List Loss for Deep Metric Learning》CVPR 2019
    《Domain Agnostic Learning with Disentangled Representations》ICML 2019
    Pytorch从0开始实现YOLO V3指南 part5——设计输入和输出的流程
    Pytorch从0开始实现YOLO V3指南 part4——置信度阈值和非极大值抑制
    Pytorch从0开始实现YOLO V3指南 part3——实现网络前向传播
    Pytorch从0开始实现YOLO V3指南 part2——搭建网络结构层
    Pytorch从0开始实现YOLO V3指南 part1——理解YOLO的工作
    让我佩服的人生 文章
    win8.1配置cordova+ionic等一系列东西
  • 原文地址:https://www.cnblogs.com/HOsystem/p/14057487.html
Copyright © 2011-2022 走看看