【SpringCloud】1、服务网关Gateway

news2024/10/2 22:21:48

这里写目录标题

  • 1.网关的介绍
  • 2.GateWay
    • 2.1 GateWay介绍

1.网关的介绍

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

如果没有网关的存在, 我们只能在客户端记录每个微服务的地址, 然后分别去调用
在这里插入图片描述
这样的架构, 会存在诸多的问题:

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

在这里插入图片描述

所谓的API网关: 系统的统一入口, 由网关帮我们路由到对应的服务, API网关是一个处于服务(提供Rest API接口服务)之前的系统, 用来管理授权、访问控制和流量限制, 这样REST API接口服务就被API网关保护起来. 一些与业务功能无关的公共逻辑就可以在这里实现, 例如认证、鉴权、监控、路由转发等等


2.GateWay

2.1 GateWay介绍

Spring Cloud GateWay是Spring Cloud官方推出的第二代网关框架, 定位于取代Netfilx Zuul, 相比于Zuul来说, Spring Cloud GateWay提供更优秀的性能, 更强大的功能

Spring Cloud Gateway功能特性

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

一、核心概念

  • 路由(route)
    路由是网关中最基础的部分, 路由信息包括一个ID、一个目的URL、一组断言工厂、一组Filter组成, 如果断言为真, 则说明请求的URL和配置的路由匹配
  • 断言(predicates)
    java8中的断言函数
  • 过滤器(Filter)
    分为Gateway Filter和Global Filter. Filter可以对请求和响应进行处理

二、工作原理
工作原理与Zuul差不多, 最大的区别是Gateway的Filter只有pre和post两种

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-04-14 使用纯JS实现一个2048小游戏

文章目录一.实现思路1.2048的逻辑2.移动操作的过程中会有三种情况二.代码部分:分为初始化部分和移动部分1.初始化部分1.1.生成第一个方块:1.2.生成第二个方块:2.移动过程部分:三.实现代码1.HTML部分2.CSS部分3.JS部分3.1.game对象的属性3.2.game对象的start方法3.3.game对象的r…

材料科学基础学习指导-吕宇鹏-名词和术语解释-第5章:相图

目录 第一部分 第二部分​​​​​​​ 第三部分 第四部分​ 第一部分 1.1组元:是材料科学中的基本术语。意思是组成合金的独立的、最基本的单元。 1.2相: 指合金中具有同一聚集状态、同一晶体结构和性质并以界面相互隔开的均匀组成部分。​​​​…

【DS】河南省第十三届ICPC大学生程序设计竞赛 J-甜甜圈

明天就要省赛了,感觉已经寄了捏 J-甜甜圈_河南省第十三届ICPC大学生程序设计竞赛(重现赛) (nowcoder.com) 题意: 思路: 直接模拟复杂度太高,因此考虑用DS优化 我们考虑用树状数组维护 在用线段树和树状…

python 填充Word文档模板 循环填充表格、图片 docxtpl、 jinja2

python 填充Word文档 循环填充表格、图片codeword模板input.txt 内容参考code from docxtpl import DocxTemplate, InlineImage from docx.shared import Inches, Cm, Mm import jinja2word_template tpl.docx out_word_file new_test.docx input_file "input.txt&quo…

【机器学习】决策树(实战)

决策树(实战) 目录一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计三、决策边界展示四、决策树的正则化&a…

【Microsoft Edge】关于 Microsoft Edge 浏览器多版本安装目录结构的测试分析

文章目录1. 问题描述准备工作二、测试2.1. 运行手动保存的安装程序无法安装2.2、依次从低版本到高版本安装2.2.1 运行腾讯电脑管家下载的正式版 112.0.1722.392.2.2 用 MicrosoftEdgeSetup 安装包安装正式版 112.0.1722.482.2.3 用 MicrosoftEdgeSetupBeta 安装包安装 Beta 版 …

别再只会使用简单的ping命令了,Linux中这些高级ping命令可以提高工作效率!

当你需要测试网络连接或者诊断网络问题时,ping命令是一个非常有用的工具。除了基本的用法,ping还有一些高级用法,可以帮助你更好地使用它。 一、基本用法 首先,让我们回顾一下ping的基本用法。ping命令用于测试与另一台计算机的…

C++ 类之间的横向关系(组合、依赖、关联和聚合)

目录 组合(复合) 定义 举例 依赖 定义 举例 关联 定义 举例 聚合 定义 举例 组合(复合) 定义 它是一种"is a part of"的关系,部分与整体,包含与被包含。组合是一个类中包含另一个类对…

企业如何高效管理新媒体矩阵账号?提升运营效率,监管内容风险

2023年,面对不确定的市场环境,更要精准把控业务动向,对于在抖音、小红书、视频号、快手等新媒体平台,布局大量账号的企业,实现矩阵账号的统一治理,不仅是应对市场不确定性影响的关键,更为有效降…

NC65合并报表如何取消上报并退回以及注意事项和相关问题总结

NC65合并报表如何取消上报并退回? 在【企业绩效管理】-【合并报表】-【合并】-【合并执行】节点中,点击〖数据中心〗按钮,在弹出的〖合并报表数据中心〗界面中,点击〖报送管理〗-〖合并方案请求退回〗,然后到【合并综…

Qt编写推流综合应用示例-文件推流

一、功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件。实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。可指定多种模式,0-直接播放、1-下载播放。实时打印显示各种收发请求和应答数据。每个文件对应MD5加密的唯一标识符…

JavaScript的基础

文章目录一、JavaScript 声明提升二、JavaScript 严格模式(use strict)三、JavaScript 表单四、JavaScript 表单验证五、JavaScript 验证 API总结一、JavaScript 声明提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。 JavaScript 中,变…

ClickHouse之采样查询(SAMPLE)

文章目录SAMPLE概念SAMPLE功能SAMPLE语法sample Ksample Nsample K offset mgroupArraySample语法SAMPLE概念 该 SAMPLE 子句允许近似于 SELECT 查询处理。 启用数据采样时,不会对所有数据执行查询,而只对特定部分数据(样本)执行…

电脑C盘被格式化 如何快速将被删的数据文件恢复找回?

如今的互联网时代,不管是办公还是休闲,一般都喜欢在电脑上进行操作,尤其是办公,感觉有了电脑能轻松不少,可以将一些工作中的重要数据保存在电脑里面,那么电脑里面的数据真就很安全了吗?这个就让…

Unity ShaderVariant 变体收集方案分析

最近遇到一个问题,在editor中场景渲染正确,打包android之后,渲染异常。 经过排查得出原因:工程把所有shader单独打包Assetbundle,editor打包ab包的时候,未收集到正确的shader变体,未将场景中使…

go语言并发编程

并发编程1.并发介绍1.1进程和线程1.2并发和并行1.3协程和线程1.协程2.线程1.4goroutine只是由官方实现的超级"线程池"2.Goroutine2.1使用Goroutine1.启动单个goroutine2.启动多个goroutine3.goroutine与线程3.1可增长的栈3.2goroutine调度3.runtime包3.1runtime.Gosc…

人员玩手机离岗识别检测系统 yolov5

人员玩手机离岗识别检测系统根通过pythonyolov5网络模型识别算法技术,人员玩手机离岗识别检测算法可以对画面中人员睡岗离岗、玩手机打电话、脱岗睡岗情况进行全天候不间断进行识别检测报警提醒。Python是一种由Guido van Rossum开发的通用编程语言,它很…

Nginx 的docker部署及宿主机配置文件修改重启

Nginx是一款高性能的Web服务器,用于反向代理、负载均衡、HTTP缓存等。在docker中部署Nginx可以更加方便地管理和配置。下面是部署Nginx的步骤: 步骤一:拉取Nginx镜像 首先需要从Docker Hub上拉取Nginx镜像,可以使用以下命令&…

windows11系统关闭右键【显示更多选项】

在新的Win11操作系统之中,微软为了美化界面,将右键菜单进行了整合更改,但是实用性却大幅度下降,引起了很多用户的反感,并迫切希望能够将Win11显示更多选项这个反人类的设置恢复成Win10的状态。 方法一:更改…

学成在线笔记0-面试问题

【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 介绍你的项目 项目难点 CDN是什么? 负载均衡是怎么做的? git使用了什么仓库? git代码冲突怎么处理? 你…