1. 前言
当前通过Eureka、Nacos解决了服务注册和服务发现问题,使用Spring Cloud LoadBalance解决了负载均衡的需求,同时借助OpenFeign实现了远程调用。然而,现有的微服务接口都直接对外暴露,容易被外部访问。为保障对外服务的安全性,通常在服务端实现的微服务接口会带有一定的权限校验机制。由于应用拆分成多个微服务,每个微服务都需要实现权限校验逻辑,导致当逻辑需要修改时,需要在多个应用中进行修改,增加了开发人员的负担。
- 1. 办事效率低
- 2. 增加了员工的工作流程
接下来我将会介绍一门新的技术: API网关 SpringCloudGateway
在微服务架构中,API 网关扮演着至关重要的角色,它是客户端和后端服务之间的门面,负责统一处理所有的请求和响应。Spring Cloud Gateway作为Spring Cloud生态系统中的一个全新项目,提供了强大而灵活的方式来构建 API 网关服务。本文将深入介绍Spring Cloud Gateway的功能、特点以及如何应用于微服务架构中。
2. 功能和特点
Spring Cloud Gateway提供了丰富的功能和特性,其中包括:
- 动态路由: 可以根据需求动态地将请求路由到相应的后端服务,实现请求的分发和转发。
- 权限控制: 可以通过实现对请求的安全控制,包括认证、鉴权、请求加密等功能,保障系统的安全性。
- 负载均衡: 集成了负载均衡的功能,可以将请求分发到多个后端服务实例中,提高系统的可用性和性能。
- 断路器: 支持断路器模式,可以在后端服务不可用时进行降级处理,避免整个系统的崩溃。
- 统一的认证和授权: 可以集成统一的认证和授权机制,保护系统的安全性。
- 监控和日志: 支持监控和日志记录,帮助开发者排查问题和优化系统性能。
-
过滤器处理: 可以通过自定义的过滤器对请求进行预处理、后处理、权限控制、日志记录等操作,实现对请求的统一管理和处理。
-
限流:可以通过过滤器和流量算法实现对流量的控制,防止流量过大导致系统崩溃。请求流量过高时, 按照网关中配置微服务能够接受的流量进行放行, 避免服务压力过大
类似前台的工作1. 权限控制: 身份验证。2. 动态路由: 根据外来客户的需求, 把客户带到指定的部门去处理。3. 负载均衡: 一个部门有很多人时, 前台会帮客客户选择具体某个人处理。4. 限流: 公司到访客⼾较多时, 进⾏流量限制, ⽐如告知明天再来。
3. 什么是API网关?

4. 简单的使用步骤
3.1 创建一个新的模块
3.2 引入依赖
<!--引入spring_cloud_gateway的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos的依赖用于动态路由-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos