springcloud微服务实战:服务网关,Gateway

本文详细介绍了Spring Cloud Gateway作为微服务的服务网关,包括其在微服务架构中的重要性,如何创建服务网关,利用过滤器拦截API请求,以及如何处理请求失败的情况。通过设置和自定义过滤器,实现接口的统一管理和鉴权,同时展示了如何通过服务网关进行异常处理,提供更友好的用户体验。

服务网关: Spring Cloud Gateway

在实际应用场景中,每一个微服务都会部署到内网服务器中,或者禁止外部访问这些端口,这是对应用的一种安全保护机制。因此,我们如果想通过互联网来访问这些服务,需要一个统一的入口,这就是本章将介绍的微服务的又一大组件——服务网关。

我们需要服务网关,还有一些很重要的因素,比如服务网关会对接口进行统一拦截并做合法性校验,一个服务可以启动多个端口,利用服务网关进行负载均衡处理等。

目前市面上有很多产品可以实现服务网关这一功能,如 Nginx、Apache、Zuul以及 Spring CloudGateway等。Spring Cloud集成了Zuul和Gateway,我们可以很方便地实现服务网关这一功能。

Gateway简介

关于Gateway,其官网是这样描述的:

This project provides a library for building an API Gateway on top of Spring MVC.Spring CloudGateway aims to provide a simple, yet effective way to route to APIs and provide cross cuttingconcerns to them such as: security, monitoring/metrics, and resiliency.

这个项目提供了一个在Spring MVC之上构建的API网关库,Spring Cloud Gateway致力于提供一个简单而有效的方法来由路由到API,并为它们提供跨领域的关注点,如安全、监控/度量和弹性。

Gateway是由Spring Cloud官方开发的一套基于WebFlux实现的网关组件,它的出现是为了替代Zuul。Gateway 不仅提供统一的路由方式,还基于Filter Chain供了网关的基本功能,例如安全、监控、埋点和限流等。

创建服务网关

本节中,我们将开始创建服务网关,进一步优化我们的微服务架构。

(1)创建一个子工程,命名为gateway并添加以下依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>< / dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</ artifactId></ dependency>
<dependency>
<artifactId>common</artifactId><groupId>com.lynn.blog</groupId>
<version>1.e-SNAPSHOT</version>
< / dependency>

前面提到,Spring Cloud Gateway基于WebFlux,因此需要添加 WebFlux依赖,注意不能引入Web依赖,否则无法正常启动gateway工程;此外,为了启用服务网关功能,还需要添加
spring-cloud-starter-gateway依赖。

(2)在Git仓库创建一个配置文件gateway.yml,并添加以下内容:

server:
port: 8088spring:
application:
name: gatewaycloud:
#Spring Cloud Gateway路由配置方式gateway:
#是否与服务发现组件进行结合,通过serviceId(必
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值