一文速通Nginx网关与gateway网关区分

目录

API网关介绍 

gateway基本介绍

Nginx基本介绍

Nginx与API gateway网关


API网关介绍 

网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐藏在 API 网关后面的业务系统就可以专注于创建和管理服务,而不用去处理这些策略性的基础设施。

API 网关负责请求路由、API组合和协议转换。来自外部客户端的所有API请求首先会先转到API网关,后者再将请求路由到相应的服务。API网关使用API组合模式处理其他请求,调用多个服务并聚合结果。同时他还可以在客户端友好的协议(例如HTTP)与客户端不友好的协议之间进行转换。

总结:网关就是所有项的一个统一入口。 

网关 = 路由转发 + 过滤器。

路由转发:接收外界请求,通过网关的路由转发,转发到后端的服务上。

过滤器:分为Gateway FilIer和Global Filter。Filter可以对请求和响应进行处理。默认支持的过滤器有:AddRequestHeader请求头,AddRequestParameter请求参数、RequestRateLimiter限流、Hystrix熔断、Retry重试等20多种过滤器,也支持自定义过滤器。

gateway基本介绍

Spring Cloud Gateway是一个基于Spring Framework 5,Spring Boot 2和Project Reactor等技术构建的网关服务器,用于为微服务应用程序提供路由、负载均衡、安全性、限流、降级等功能。

SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty

SpringCloudGateway : 微服务网关,事项微服务的统一路由,统一鉴权,跨域,限流等功能 

Nginx基本介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx相比其他Web服务器软件的优点如下:

  1. 高性能:Nginx采用异步、非阻塞的事件驱动模型,可以支持高并发请求,并且消耗较少的系统资源。
  2. 轻量级:Nginx的二进制文件很小,可以快速启动并占用较少的内存。
  3. 可靠性高:Nginx的代码被设计为高可靠性的,可以在长时间运行中保持稳定性。
  4. 可扩展性好:Nginx可以通过添加第三方模块或编写自定义模块来扩展其功能。
  5. 支持热部署:Nginx可以在不停止服务的情况下重新加载配置文件和动态模块。
Nginx与API gateway网关

本质上API网关也是做了请求的转发,那既然Nginx也可以做请求转发,那这两者有什么区别?

在具体架构设计时Nginx做负载均衡时,考虑到API网关在系统中不止一个(以集群的方式做高可用),通常可以将Nginx至于API网关前,负责对API网关的负载均衡,然后再由网关决定进入根据判定到哪个真实的web 服务器。 让两者的分工更加明确,也就是:API网关聚合服务,Nginx请求转发 

业务网关(gateway):对于具体的后端业务应用或者是服务和业务有一定关联性的策略网关。业务网关针对具体的业务需要提供特定的流控策略、缓存策略、鉴权认证策略

流量网关(Nginx):与业务网关相反,定义全局性的、跟具体的后端业务应用和服务完全无关的策略网关。流量网关通常只专注于全局的Api管理策略,比如全局流量监控、日志记录、全局限流、黑白名单控制、接入请求到业务系统的负载均衡等

业务网关一般部署在流量网关之后、业务系统之前,比流量网关更靠近业务系统。通常API网指的是业务网关。 有时候我们也会模糊流量网关和业务网关,让一个网关承担所有的工作,所以这两者之间并没有严格的界线。

nginx与gateway的区别:

  • nginx是用C语言写的,自定义扩展的话,要么写C要么写lua
  • gateway是java语言的一个框架,可以在框架上进行代码的扩展与控制,例如:安全控制,统一异常处理,XXS,SQL注入等;权限控制,黑白名单,性能监控,日志打印等;
  • gateway的主要功能有,路由,断言,过滤器,利用它的这些特性,可以做流控。
  • nginx做网关,更多的是做总流量入口,反向代理,负载均衡等,还可以用来做web服务器。

Nginx在其中扮演的角色是什么?

  • 反向代理
  • 负载均衡

SpringGateway在其中扮演的角色是什么?

  • 统一鉴权
  • 负载均衡
  • 服务发现

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.前端--CSS-背景属性

1.背景颜色 样式名称: background-color 定义元素的背景颜色 使用方式: background-color:颜色值; 其他说明: 元素背景颜色默认值是 transparent(透明)      background-color:transparent; 代码演示: 背景色…

MySQL定期整理磁盘碎片

MySQL定期整理磁盘碎片:提升数据库性能的终极指南 MySQL作为一个强大的关系型数据库管理系统,在长时间运行后可能会产生磁盘碎片,影响数据库性能。本博客将深入讨论如何定期整理MySQL磁盘碎片,以确保数据库的高效运行。我们将介绍…

Redis--HyperLogLog的指令语法与使用场景举例(UV统计)

文章目录 前言HyperLogLog介绍HyperLogLog指令使用使用场景:UV统计 前言 Redis除了常见的五种数据类型之外,其实还有一些少见的数据结构,如Geo,HyperLogLog等。虽然它们少见,但是作用却不容小觑。本文将介绍HyperLogL…

微信小程序首页、界面布局、功能简洁(示例三)

微信小程序首页界面布局、页面简洁,功能简单 直接上具体代码: 1、js代码 Page({/*** 页面的初始数据*/data: {imgList: [../../images/demo.jpg, ../../images/demo.jpg, ../../images/demo.jpg],navList: [{src: ../../images/nav1.png,title: 菜单一}…

鸿蒙开发系列教程(八)--ArkTS语言:IF-ELSE渲染

条件渲染 if/else Entry Component struct ViewA1 {State count: number 0;build() {Column() {Text(计数${this.count})if (this.count 5) {Text(数字等于5).fontColor(Color.Green)} else {Text(数字不等于5).fontColor(Color.Red)}Button(增加).onClick(() > {this.cou…

理想汽车大模型算法工程师面试,被问的瑟瑟发抖。。。。

最近我们技术群的一位小伙伴,分享了他面试理想汽车大模型算法工程师的经历与经验。 今天整理后分享给大家,如果你对这块感兴趣,可以文末加入我们的技术&面试讨论群 一面(1.5h,感觉有点难) 自我介绍&…

CPU中的算术逻辑单元(ALU)

ALU有2个单元,1个算术单元和1个逻辑单元 算数单元 1 bit加法 半加器 由一个异或门(XOR)和与门(AND)两个逻辑门构成,异或门表示无进位加法(sum),而与门表示进位&…

解决 Git:ssh: connect to host github.com port 22: Connection timed out 问题的三种方案

1、问题描述: 其一、整体提示为: ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. 中文为: ssh:连接到主机 github.com 端口 22:连接超时 fatal&a…

在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通

目录 博客前言 一.创建springboot项目 新建项目 选择创建类型​编辑 测试 二.集成达梦数据库 添加达梦数据库部分依赖 添加数据库驱动包 配置数据库连接信息 编写测试代码 验证连接是否成功 博客前言 随着数字化时代的到来,数据库在应用程序中的地位越来…

在Go中处理HTTP请求和响应

在Go语言中,处理HTTP请求和响应的关键在于对net/http包的理解和使用。这个包提供了强大的工具,使开发者能够轻松地构建Web应用程序。以下是一个简单的示例,展示了如何在Go中处理HTTP请求和响应。 首先,确保你已经安装了Go语言的开…

spring Cloud Stream 实战应用深度讲解

springCloudStream 简介 Spring Cloud Stream是一个框架,用于构建与共享消息传递系统连接的高度可扩展的事件驱动微服务。 该框架提供了一个灵活的编程模型,该模型建立在已经建立和熟悉的 Spring 习惯用语和最佳实践之上,包括对持久发布/订…

springboot家乡特色推荐系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&#xff0…