SpringBoot Cloud Gateway

网关简介

大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?

如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去用。

这样的架构,会存在着诸多的问题:

  • 每个业务都会需要鉴权、限流、权限校验、跨域等逻辑,如果每个业务都各自为战,自己造轮子实现一遍,会
    很蛋疼,完全可以抽出来,放到一个统一的地方去做。
  • 如果业务量比较简单的话,这种方式前期不会有什么问题,但随着业务越来越复杂,比如淘宝、亚马逊打开一
    个页面可能会涉及到数百个微服务协同工作,如果每一个微服务都分配一个域名的话,一方面客户端代码会很难维
    护,涉及到数百个域名,另一方面是连接数的瓶颈,想象一下你打开一个APP,通过抓包发现涉及到了数百个远程 调用,这在移动端下会显得非常低效。
  • 后期如果需要对微服务进行重构的话,也会变的非常麻烦,需要客户端配合你一起进行改造,比如商品服务,
    随着业务变的越来越复杂,后期需要进行拆分成多个微服务,这个时候对外提供的服务也需要拆分成多个,同时需 要客户端配合你进行改造,非常蛋疼

    整体架构如下:

1.什么是SpringBoot Cloud Gateway

网关作为流量的入口,常用的功能包括路由转发,权限校验,限流等。

Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架,定位于取代 Netflix Zuul1.0。相比 Zuul 来说,Spring Cloud

Gateway 提供更优秀的性能,更强大的有功能。

Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。它不能在传统的 servlet 容器中工作,也不能构

建成 war 包。

Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如

说安全认证、监控、限流等等。
Spring Cloud Gateway 功能特征

  • 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;
  • 动态路由:能够匹配任何请求属性;
  • 支持路径重写;
  • 集成 Spring Cloud 服务发现功能(Nacos、Eruka);
  • 可集成流控降级功能(Sentinel、Hystrix);
  • 可以对路由指定易于编写的 Predicate(断言)和 Filter(过滤器);

思考:

1.为什么前端不能从nacos中获取服务列表直接访问服务,而是需要通过网关完成访问

前端无法直接通过nacos获取服务列表的原因通常是处于安全和架构的考虑。Nacos是一个服务发现和配置管理平台,用于再分布式系统中注册、发现和配置微服务。然而,将Nacos直接暴露给前端可能存在一些安全风险,因为前端通常是在客户端执行的,直接暴露Nacos可能会暴露微服务的部分信息或者可能导致不必要的访问压力。

通常,前端与服务器之间需要一个中间件,比如API网关(gateway),用于处理前端的请求并将其转发给后端的微服务。API网关充当了前端与微服务之间的"门面",它可以隐藏后端微服务的细节,提供安全性、性能优化、负载均衡等功能。通过API网关,前端可以从一个统一的入口点访问后端微服务,而不需要知道每个微服务的具体位置和细节。

因此,通过API网关作为前端与后端微服务之间的中间层可以更好地管理和控制流量,确保安全性和可靠性,并且使得整个系统更易于扩展和维护。

注意:部分内容转载于图灵课堂徐庶老师

https://www.bilibili.com/video/BV1WF4m1K7eB/?p=2\&spm_id_from=pageDriver\&vd_source=40b222f0efa6136b87bd742a95975a35

相关推荐
文子越来越强3 小时前
【双因子认证】拦截注解@MFACheck 接入指南(其他微服务如何用)
java
ZGG0033 小时前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
迪康Defender3 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
京师20万禁军教头4 小时前
47-常用类-八大包装类(Wrapper Classes)
java
come112344 小时前
剪映零基础教程
java·linux·运维
16月6日-晴4 小时前
Java面向对象——接口
java·开发语言
苏生Susheng4 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
Java小白笔记4 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
武子康5 小时前
Seedream 5.0 Pro 进入 Vercel AI Gateway:图像生成开始网关化
人工智能·ai·chatgpt·gateway·agent·claude·harness
Forerror20265 小时前
API网关怎么部署?MAI Gateway配置教程与最佳实践
人工智能·gateway·maigateway·finapi·企业级ai网关·大模型财务管控