SpringCloud实战六:服务网关Zuul(一)

栏目: Java · 发布时间: 6年前

内容简介:Hello大家好,我是初晨,本章我们学习SpringCloud 服务网关Zuul的使用。大家有问题和意见可以发邮箱mr_beany@163.comZuul是Spring Cloud服务系列中的微服务API网关。Zuul的核心是一系列的

Hello大家好,我是初晨,本章我们学习SpringCloud 服务网关Zuul的使用。大家有问题和意见可以发邮箱mr_beany@163.com

一:什么是Zuul

Zuul是Spring Cloud服务系列中的微服务API网关。

Zuul的核心是一系列的 filters , 其作用可以类比Servlet框架的Filter,或者AOP。

所有的请求都会经过Zuul的验证之后到达其他各个服务。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能:

  • 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。
  • 性能监测 在服务边界追踪并统计数据,提供精确的生产视图。
  • 动态路由: 以动态方式根据需要将请求路由至不同后端集群处。
  • 压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。
  • 负载卸载 预先为每种类型的请求分配容量,当请求超过容量时自动丢弃。
  • 静态资源处理 直接在边界返回某些响应。

二:创建服务网关

1:创建过程与 SpringCloud 实战二:Client的创建和高可用 一样

SpringCloud实战六:服务网关Zuul(一)

2:打开pom文件,添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>复制代码

3:修改启动类,添加 @EnableZuulProxy

SpringCloud实战六:服务网关Zuul(一)

4:修改配置文件名称为bootstrap.yml

spring:
  application:
    name: api-gateway
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev复制代码

5:打开git仓库,创建配置文件

SpringCloud实战六:服务网关Zuul(一)

6:启动服务,访问 http://localhost:8761/

SpringCloud实战六:服务网关Zuul(一)

可以看到网关服务已经注册成功。

7:通过网关服务的路由来访问其他服务接口

我们来访问前面为创建组件间通信创建的 http://localhost:8081/getServerResult

SpringCloud实战六:服务网关Zuul(一)

可以访问,再通过网关访问 http://localhost:8085/client/getServerResult

SpringCloud实战六:服务网关Zuul(一)

其中8085是服务网关的ip,client代表着client服务,getServerResult代表访问路径

8:自定义路由

通过Zuul每次访问client服务时都需要带上client,那么怎么才能不使用client而使用自定义的名称呢?

修改api-gateway服务配置文件,添加如下配置

zuul:
  routes:
    myClient:
      path: /myClient/**
      serviceId: client复制代码

这时地址栏中输入 http://localhost:8085/myClient/getServerResult

SpringCloud实战六:服务网关Zuul(一)

仍然可以获取到返回结果。

那么我们怎么查看所有路由的规则呢?

地址栏中输入 http://localhost:8085/actuator/routes

SpringCloud实战六:服务网关Zuul(一)

9:禁用路由

修改api-gateway配置文件,添加如下

zuul:
  ignored-patterns:
      - /**/getServerResult复制代码

此时我们git上的配置文件应该为

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
management:
  endpoints:
    web:
      exposure:
        include: '*'
zuul:
  routes:
    myClient:
      path: /myClient/**
      serviceId: client
      # 设置可以传递请求头
      sensitiveHeaders:
  ignored-patterns:
      - /**/getServerResult复制代码

这里我们把这个url给禁用掉,再次访问该地址

SpringCloud实战六:服务网关Zuul(一)

10:动态配置路由

利用我们上篇文章讲的统一配置中心,来实现动态配置路由功能,大家可以先回想一下配置的步骤

  • 在api-gateway服务上,添加依赖
    <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>复制代码
  • 修改git上api-gateway服务的配置文件,添加rabbitmq配置信息
    spring:
      rabbitmq:
        host: 192.168.99.100
        username: user
        password: password
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    zuul:
      routes:
        myClient:
          path: /myClient/**
          serviceId: client
          # 设置可以传递请求头
          sensitiveHeaders:
      ignored-patterns:
          - /**/getServerResult复制代码
  • 创建ZuulConfig.java
    package com.example.apigateway;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
    
    @Component
    public class ZuulConfig {
    
        @ConfigurationProperties("zuul")
        @RefreshScope
        public ZuulProperties zuulProperties(){
            return new ZuulProperties();
        }
    }复制代码

注意这时我们访问 http://localhost:8085/myClient/getServerResult 是404的,因为我们已经在配置文件中把url禁用了

SpringCloud实战六:服务网关Zuul(一)

修改git上api-gateway的配置文件,把禁用 http://localhost:8085/myClient/getServerResult

的配置注释掉

SpringCloud实战六:服务网关Zuul(一)

然后postman访问 http://localhost:8084/actuator/bus-refresh 来刷新配置文件

再次访问 SpringCloud实战六:服务网关Zuul(一)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

可视化未来

可视化未来

[美] 埃雷兹·艾登、[法] 让-巴蒂斯特·米歇尔 / 王彤彤、沈华伟、程学旗 / 浙江人民出版社 / 2015-9 / 54.90元

科学的传播速度有多快?今时今日我们很少谈论上帝了吗?人们什么时候开始用“having sex” 而不用“making love”? 史上的人是在哪岁成名的?语法的变化速度到底有多快?哪些作家被纳粹审查得最彻底? “donut” 什么时候开始取代“doughnut”? 我 们能否预测人类未来?比尔·克林顿和花椰菜哪个更出名? 《可视化未来》一书的两位作者通过与“谷歌图书”的合作,得以有机会研究......一起来看看 《可视化未来》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具