微服务网关SpringCloudGateway实战

news/2025/1/8 15:19:03/

目录

微服务网关SpringCloudGateway

1.概述

2.核心概念

快速入门

1.微服务开发

2.网关配置创建一个Gateway服务,引入以下依赖:


微服务网关SpringCloudGateway

1.概述

Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。

2.核心概念

网关提供API全托管服务,丰富的API管理功能,辅助企业管理大规模的API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等贡呢。一般来说网关对外暴露的URL或者接口信息,我们统称为路由信息。如果研发过网关中间件或者使用过Zuul的人,会知道网关的核心是Filter以及Filter Chain(Filter责任链)。Sprig Cloud Gateway也具有路由和Filter的概念。下面介绍一下Spring Cloud Gateway中几个重要的概念。

  • 路由。路由是网关最基础的部分,路由信息有一个ID、一个目的URL、一组断言和一组Filter组成。如果断言路由为真,则说明请求的URL和配置匹配

  • 断言。Java8中的断言函数。Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自于http request中的任何信息,比如请求头和参数等。

  • 过滤器。一个标准的Spring webFilter。Spring cloud gateway中的filter分为两种类型的Filter,分别是Gateway Filter和Global Filter。过滤器Filter将会对请求和响应进行修改处理

 如上图中所示,http请求会先被ngnix进行过滤将有用的请求交给网关也就是今天说的Gateway,然后由Gateway交给对应的api

快速入门

以Spring Boot框架开发为例,启动一个Gateway服务模块(以Consul作为注册中心),一个后端服务模块。client端请求经gateway服务把请求路由到后端服务。

前提条件:

  • Consul:版本1.5.0。

  • Spring bot:版本2.1.5。

  • Spring cloud:版本Greenwich.SR1。

  • Redis:版本5.0.5。

1.微服务开发

这里以使用Spring Boot框架开发微服务为例,启动一个服务并注册到Consul。

引入依赖:

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

注册服务到Consul,配置文件配置如下:

spring:  application:    name: service-consumer  cloud:    consul:      host: 127.0.0.1      port: 8500      discovery:        service-name: service-consumer

如下定义RestController,发布HTTP接口。(注:此为服务端配置,经Gateway把请求路由转发到该服务上。)

@RestController@RequestMapping("/user")
public class UserController {    @Resourceprivate UserService userService;  @GetMapping(value = "/info")public User info() {return userService.info();    }
}

2.网关配置
创建一个Gateway服务,引入以下依赖:

<dependency>    <groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

启动类配置如下:

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {    public static void main(String[] args) {                    SpringApplication.run(GatewayApplication.class, args);    }
}

Spring Cloud Gateway对client端请求起到路由功能,主要配置如下:

server:  port: 8098spring:  application:    name: service-gateway  cloud:    gateway:      discovery:        locator:          enabled: true             lower-case-service-id: true      consul:      host: 127.0.0.1 #注册gateway网关到consul      port: 8500      discovery:        service-name: service-gateway

此时使用http://localhost:8089/service-consumer/user/info访问服务,网关即可对服务进行路由转发,把请求转发到具体后端服务上。此时,url中使用的url前缀service-consumer,是后端服务在Consul注册的服务名称转为小写字母以后的字符串。


http://www.ppmy.cn/news/752260.html

相关文章

超级详细了解进程和病毒知识

第一&#xff1a;进程是什么  进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xff0c;我们可以简单地理解为&#xff1a;它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括&#xff1a;系统管理计算机个体和完成各种操作所必需…

超级详细学习了解进程和病毒知识

超级详细学习了解进程和病毒知识 作者&#xff1a;不详  来源于&#xff1a;黑客在线  发布时间&#xff1a;2007-4-3 10:26:48超级详细了解进程和病毒知识 第一&#xff1a;进程是什么  进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xf…

十七点学完安全知识超级详细了解进程和病毒知识

第一&#xff1a;进程是什么 进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xff0c;我们可以简单地理解为&#xff1a;它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括&#xff1a;系统管理计算机个体和完成各种操作所必需的程…

十七点学完安全知识超级详细了解进程和病毒知识(转)

十七点学完安全知识超级详细了解进程和病毒知识(转)[more] 第一&#xff1a;进程是什么 进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xff0c;我们可以简单地理解为&#xff1a;它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包…

了解进程和病毒的十七点相关知识

了解进程和病毒的十七点相关知识 第一&#xff1a;进程是什么 进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xff0c;我们可以简单地理解为&#xff1a;它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括&#xff1a;系统管理计…

udp3

VB.net 2005实现TCP网络通信例程(.net VS2005)源码TCP协议是TCP/IP协议簇中的传输层中的一个协议&#xff0c;也是TCP/IP协议簇最为重要的协议之 一。在TCP/IP协议簇中&#xff0c;有一个协议和TCP协议非常类似&#xff0c;这就是UDP协议&#xff0c;网络上进行 基于UDP协议的…

了解进程和病毒十七点相关知识

第一&#xff1a;进程是什么 进程为应用程序的运行实例&#xff0c;是应用程序的一次动态执行。看似高深&#xff0c;我们可以简单地理解为&#xff1a;它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括&#xff1a;系统管理计算机个体和完成各种操作所必需的程…

企业网络工程解决方案

企业网络工程解决方案 一、企业网络设计  &#xff08;1&#xff09;主干网设计  采用千兆以太网技术。千兆以太网技术特点是具有高速数据传输带宽&#xff0c;基本能满足高速交换及多媒体对服务质量的要求。易于网络升级、易于维护、易于管理&#xff0c;具有良好的价格比…