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

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

内容简介: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(一)


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

查看所有标签

猜你喜欢:

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

从0到1

从0到1

彼得·蒂尔、布莱克·马斯特斯 / 高玉芳 / 中信出版股份有限公司 / 2015-1-1 / CNY 45.00

图书简介: http://v.youku.com/v_show/id_XOTA0NjcyMzE2.html?wm=3333_2001 硅谷创投教父、PayPal创始人作品,斯坦福大学改变未来的一堂课,为世界创造价值的商业哲学。 在科技剧烈改变世界的今天,想要成功,你必须在一切发生之前研究结局。 你必须找到创新的独特方式,让未来不仅仅与众不同,而且更加美好。 从0到1,......一起来看看 《从0到1》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换