SpringCloud全家桶学习之路由网关----Zuul(六)

一、Zuul概述

(1)Zuul是什么?

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

  

    ①Zuul服务最终还是会注册到Eureka

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

  本项目地址:https://github.com/Simple-Coder/microservice-demo-study

(2)官网介绍

  源码参考地址:https://github.com/Netflix/zuul/wiki/Getting-Started-2.0

  

 二、Zuul路由基本配置

(1)Maven模块结构图

 (2)microservice-zuul-gateway9527模块添加pom依赖

        <!--zuul相关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <!--eureka相关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>    
pom

(3)microservice-zuul-gateway9527模块添加:application.yml

server:
  port: 9527
spring:
  application:
    name: microservice-zuul-gateway
eureka:
  client:
    service-url:
      defaultZone: http://eureka8001:8001/eureka,http://eureka8002:8002/eureka,http://eureka8003:8003/eureka
  instance:
    instance-id: gateway-9527
    prefer-ip-address: true

info:
  app.name: microservice-zuul-gateway
  company.name: www.microservice.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$
application.yml

(4)本地hosts文件修改:C:\Windows\System32\drivers\etc

(5)依次启动3个eureka、1个provider、网关zuul-gateway,出现以下界面说明启动成功!

 

 (6)测试(分为使用路由、不使用路由2个测试)

①不使用路由访问:http://localhost:9001/provider/get/1001

②使用路由访问:http://myzuul.com:9527/microservice-provider/provider/get/1001(http://本地网关hosts名:端口/服务提供者服务名称/具体地址映射)

   至此,zuul的基本配置完成,接下来就是zuul路由访问映射规则

 三、Zuul路由访问映射规则

  我们上边的测试:http://myzuul.com:9527/microservice-provider/provider/get/1001,红色部分使用的是真实的微服务名称,在实际生产中肯定不会暴露出来的。所以需要对网关的配置文件进行修改完成以下功能:

(1)之前访问:http://myzuul.com:9527/microservice-provider/provider/get/1001

(2)application.yml添加如下配置:

 

(3)现在访问:http://myzuul.com:9527/myprovider/provider/get/1001

 (4)此时问题

  以上两个地址此时都可以访问成功!违反了单入口的原则,所以application.yml文件还需添加以下内容! 

 (5测试

①访问:http://myzuul.com:9527/microservice-provider/provider/get/1001,界面如下测试成功!

②访问:http://myzuul.com:9527/myprovider/provider/get/1001,界面如下,说明忽略微服务真实名称成功!

  此时,微服务名称对外不暴露,只提供对外访问的部分url,通过网关配置完成!

四、总结

  zuul模块相对其他模块来说,helloworld入门比较简单,做了以下小总结:

  ①zuul主要提供路由转发和过滤功能

  ②zuul最终还是会注册到eureka,从eureka中获取其他微服务信息

参考地址:https://www.iteye.com/blog/huan1993-2424676

posted @ 2019-09-21 19:22  coder、  阅读(486)  评论(0编辑  收藏  举报