• 网关概念+Nginx正反向代理+负载均衡+Spring Cloud Gateway


    参考:https://zhuanlan.zhihu.com/p/554271093

    一:什么是网关

    1.网关简介

    网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能,提供路由请求、鉴权、监控、缓存、限流等功能。无论你查看任何一个微服务项目架构,你都会发现在客户端和服务器端之间有一个网关,移动端的任何请求都必须经过网关才能到达服务端,见下图:在这里插入图片描述

    2.使用网关的意义

    试想这样的情景,小崩同学要在一个网站上面购买东西,首先他输入了网址A访问了网站首页,然后小崩需要登录进行购买,但是这时候网站并不会自动跳转登录页面,因为这时候小崩需要访问的是登录微服务,需要另外输入新的网址B来进入登录界面。这时候小崩说,我只知道http://www.jd.com啊,我哪里知道京东的登录网址是什么。这时候小崩进行了一番搜索,终于获得了京东的登录界面网址,然后小崩成功登录了京东账号,点击结算,这时候需要访问的是订单微服务,而系统又提示小崩需要输入网址C进入订单微服务,这时候小崩实在蚌埠住了,一怒之下放弃了剁手,直接省下999。

    假如没有网关,你就可能会遇到像小崩那样的情景,相信这样你也会绷不住的,因为每一个微服务都有自己的访问地址,我们完成一个业务需求可能需要调用多个微服务,没有网关的场景是这样的:在这里插入图片描述
    这样的结构存在如下问题:

    我们完成一个业务需求需要访问很多个微服务,而这些全部都要我们自己一个个手动完成,增加了客户端的复杂性。
    存在跨域请求问题,处理相对复杂。
    订单微服务需要依赖于用户已经登录的情况,这时候就存在一个认证问题,因为每个微服务都需要单独进行认证。
    这时候引入网关,场景发生了变化:在这里插入图片描述
    这时候我们有业务需求我们只需要直接访问网关即可,然后网关会根据实际请求再去访问不同的微服务,这样我们只需要与网关进行交互,只需要记住网关的地址,这样就解决了用户交互复杂问题;同时所有的认证请求都统一在网关进行认证,这时候就解决了认证困难问题;最后,我们还能通过网关对所有微服务进行监控,实时掌握各个微服务的运行状况,便于管理。

    Gateway简介

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

    Nginx和Gateway

    1.区别

    相同点:都是可以实现对api接口的拦截,负载均衡、反向代理、请求过滤等。
    不同点:Nginx是用C语言写的,而Gateway是用Java写的,能够更好对微服务实现拓展功能,而Nginx想要实现拓展功能需要结合Lua语言等。此外Nginx实现负载均衡原理是属于服务器端负载均衡器,而Gateway则是采用本地负载均衡的形式。

    2.请求转发方式

    在这里插入图片描述
    首先Nginx会抵御第一波的并发流量,是用户最前端的访问,可以把它当做第一层网关。可以看到项目中我都是通过Nginx来实现静态资源映射的,这时候输入的url是Nginx中配置的url。经过Nginx之后,Nginx通过反向代理再将请求转发到不同的网关系统,这是第二层网关,网关系统是根据不同的微服务来整合的,比如移动端网关,自媒体端网关,管理员端网关等。

  • 相关阅读:
    【洛谷 P1449】后缀表达式 题解(栈+分支)
    LC15.三数之和、LC22括号生成
    2022年10月21日数据库实验内容
    【zip密码】7-zip分卷压缩方法
    Node安装及配置
    为什么你买店铺管理软件总是踩雷?实测市面上十几个店铺管理软件,才总结出这三个大坑,行家也难逃过!
    基于SpringBoot + Vue的学生成绩管理系统的设计与实现源码及搭建视频
    与堆和堆排序相关的问题
    聚焦 “新基建”,臻图信息打造智慧交通仿真最佳方案!
    Vue项目中v-bind动态绑定src路径不成功问题及解决
  • 原文地址:https://blog.csdn.net/qq_15821487/article/details/126891238