> 文章列表 > 【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建

【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建

【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建

这篇文章,主要介绍微服务组件之Gateway服务网关基础环境搭建。

目录

一、Gateway服务网关

1.1、什么是Gateway

1.2、Gateway基础环境搭建

(1)基础环境介绍

(2)引入依赖

(3)添加路由配置信息

(4)运行测试

1.3、Gateway三个核心概念

1.4、Gateway配置信息

(1)routes路由信息配置

(2)defaultFilters默认过滤器配置

(3)predicates断言配置


一、Gateway服务网关

1.1、什么是Gateway

在微服务架构里面,会存在很多的微服务应用程序,这些服务集群部署在一起对外提供服务,一般实际开发中,都会通过一个公共的入口地址将微服务应用暴露给客户端,这个公共的入口将其单独作为一个微服务应用,这个应用程序就叫做:服务网关,常见的网关有:zuul、Gateway等,其中Gateway的出现就是为了替代zuul网关。基于网关,可以实现统一用户认证、统一权限校验、接口限流、服务降级、接口调用统计、协议适配等功能。

有五种实现网关功能的方案,分别是:

  • 第一种:nginx + Lua。
  • 第二种:Kong。
  • 第三种:Traefik。
  • 第四种:Spring Cloud Netflix Zuul。
  • 第五种:Spring Cloud Gateway。

1.2、Gateway基础环境搭建

(1)基础环境介绍

这篇文章搭建的基础环境主要包含下面几个工程:

  • 注册中心:eureka服务端(直接使用前几篇文章的应用程序)。
  • 服务提供者:搭建一个服务消费者(consumer-client)、一个服务提供者(provider-client)(直接使用前几篇文章的应用程序)。
  • 网关工程(gateway-server):搭建Gateway网关工程(这篇文章需要创建的新工程)。

(2)引入依赖

  • 创建一个【gateway-server】工程,引入【gateway】依赖。
<!-- 引入 Gateway 依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

(3)添加路由配置信息

server:port: 8888
spring:application:name: gateway-server# 配置 gateway 路由信息cloud:gateway:# 指定路由信息routes:- id: consumer-client # 路由唯一标识,一般和微服务应用名称相同即可# 目标路由的服务地址,这里采用的是静态路由(将微服务的地址写死在配置文件里面)uri: http://localhost:8081/# 配置断言,也就是请求的URI满足哪些规则,才可以匹配当前这个routes路由信息predicates:# 这里使用路由断言,所有 /api/consumer 开头的请求,都将转发到 http://localhost:8081/ 这个服务上面- Path=/api/consumer/

(4)运行测试

依次启动eureka、consumer-client、provider-client、gateway-server四个工程,打开postman,访问gateway-server网关工程访问接口【http://localhost:8888/api/consumer/getUserInfo?username=csdn2023】,此时可以正常返回响应结果,就表示网关工程的基础环境就搭建成功。

1.3、Gateway三个核心概念

Gateway网关中,有三个重要的核心概念,分别是:路由Routes、断言Predicates、过滤器Filter。路由Routes是Gateway网关中最基本的一个组成部分,它主要负责定义微服务的路由信息,它是由路由ID、目标URI、一组断言、一组过滤器组成的。

当客户端一个请求到达Gateway网关的时候,首先会被Gateway Handler Mapping处理,根据URI找到能够匹配的Routes路由信息,然后将路由信息发送到Global Web Handler进行微服务应用程序的接口调用,调用之前会经过一系列的Filter,接口调用成功之后,也会经过一系列的Filter,最终返回给客户端,这就是Gateway网关的一个大致工作原理。

断言是指定路由信息满足哪些规则时候,才会匹配成功,简单的理解为,断言就是一系列的if判断语句,只有当前客户端请求满足条件的时候,才能够找到这个路由信息,然后根据这个路由信息去调用微服务。

过滤器Filter是在调用微服务的过程中,可以在过滤器中增加一些额外的操作,比如:增加header头信息、去掉某些请求参数等等,有两种类型的过滤器:Gateway Filter路由过滤器 和 Global Filter全局过滤器。

1.4、Gateway配置信息

在GatewayProperties类中定义了Gateway网关相关的配置信息,其中大致包含:routes、defaultFilters、streamingMediaTypes等信息,如下所示:

(1)routes路由信息配置

其中routes是最关键的配置信息,用于定义路由信息,每一个路由信息都被抽象成了RouteDefination对象,这个类中包含:id、uri、order、predicates、filters、metadata。

id用于指定路由的唯一标识,一般和微服务名称相同即可;uri用于指定目标微服务的服务地址(可以指定具体的服务地址,也可以结合注册中心实现动态路由功能);order用于指定多种路由中的优先级;predicates用于指定断言;filters用于设置过滤器;metedata用于设置元数据信息。

(2)defaultFilters默认过滤器配置

Gateway给我们提供了一些默认的过滤器,使用的时候通过defaultFilters属性指定,每一个过滤器对象被抽象成一个FilterDefination类。

(3)predicates断言配置

predicates属性用于指定路由的断言,满足断言的URI将匹配当前这个路由信息。断言可以有多个,只要满足其中一个条件,就可以匹配当前这个路由信息,按照顺序依次匹配,只要前面匹配成功了,后面的断言就不会执行了,每一个断言对象都被抽象成了一个PredicateDefination类。

到此, Gateway服务网关的基础环境就搭建完啦。

综上,这篇文章结束了,主要介绍微服务组件之Gateway服务网关基础环境搭建。