• SpringCloud五大组件 --- Zull路由网关


    10. Zull路由网关

    概述

    什么是zuul?

    Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能:

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

    在这里插入图片描述

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

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

    Zuul 能干嘛?

    • 路由
    • 过滤

    官方文档:https://github.com/Netflix/zuul/

    入门案例

    新建springcloud-zuul模块,并导入依赖

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zuulartifactId>
            <version>1.4.6.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-hystrixartifactId>
            <version>1.4.6.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-hystrix-dashboarartifactId>
            <version>1.4.6.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-ribbonartifactId>
            <version>1.4.6.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-eurekaartifactId>
            <version>1.4.6.RELEASEversion>
        dependency>
        
        <dependency>
            <groupId>com.haustgroupId>
            <artifactId>springcloud-apiartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    application.yml

    server:
      port: 9527
    
    #mybatis的配置
    mybatis:
      type-aliases-package: com.hcz.pojo
      config-location: classpath:mybatis/mybatis-config.xml
      mapper-locations: classpath:mybatis/mapper/*.xml
    
    #spring的配置
    spring:
      application:
        name: springcloud-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: zuul9527.com #修改Eureka上的默认描述信息
        prefer-ip-address: true
    
    # info配置
    info:
      app.name: hcz-springcloud  # 项目的名称
      company.name: 软件学院      # 公司的名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    主启动类

    @SpringBootApplication
    @EnableZuulProxy // 开启Zuul
    public class ZuulApplication_9527 {
        public static void main(String[] args) {
            SpringApplication.run(ZuulApplication_9527.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    测试:

    在这里插入图片描述

    在这里插入图片描述

    上图是没有经过Zull路由网关配置时,服务接口访问的路由,可以看出直接用微服务(服务提供方)名称去访问,这样不安全,不能将微服务名称暴露!在配置文件中添加路由网关配置

    application.yml

    # zull 路由网关配置
    zuul:
      # 路由相关配置
      # 原来访问路由 eg:http://www.hczstudy.com:9527/springcloud-provider-dept/dept/get/1
      # zull路由配置后访问路由 eg:http://www.hczstudy.com:9527/hcz/mydept/dept/get/1
      routes:
        mydept.serviceId: springcloud-provider-dept # eureka注册中心的服务提供方路由名称
        mydept.path: /mydept/** # 将eureka注册中心的服务提供方路由名称 改为自定义路由名称
      # 不能再使用这个路径访问了,*: 忽略,隐藏全部的服务名称~
      ignored-services: "*"
      # 设置公共的前缀
      prefix: /hcz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    所以经过Zull路由网关配置后,访问的路由为:

    在这里插入图片描述

    在这里插入图片描述

    我们看到,微服务名称被替换并隐藏,换成了我们自定义的微服务名称mydept,同时加上了前缀hcz,这样就做到了对路由fan访问的加密处理!

  • 相关阅读:
    第一章:最新版零基础学习 PYTHON 教程(第一节 - 简介)
    HarmonyOS 应用生命周期有哪些? 按返回键会调用哪些生命周期?
    太硬核了 GitHub上堪称完美的神仙并发编程笔记,请收下我的下巴
    springboot项目:加入购物车
    iview表格实现的编辑和expand功能
    论文字数和检测字数有什么区别?
    渗透测试——内网主机发现
    图神经网络(1):图卷积神经网络GCN ICLR 2017
    Linux 命令大全
    Discrete Mathematics and Its Applications 8th Edition 目录
  • 原文地址:https://blog.csdn.net/hcz666/article/details/126403413