【中间件】—一篇说明白API网关常用API网关推荐

【中间件】- API网关简介

⭐⭐⭐⭐⭐⭐
Github主页👉https://github.com/A-BigTree
笔记仓库👉https://github.com/A-BigTree/tree-learning-notes
个人主页👉https://www.abigtree.top
⭐⭐⭐⭐⭐⭐

文章目录

  • 【中间件】- API网关简介
    • 1 计算机中的网关
    • 2 微服务环境中的API网关
      • 2.1 背景
      • 2.2 API网关是什么
      • 2.3 API网关的主要功能
        • 1、路由转发
        • 2、负载均衡
        • 3、稳定性保障
        • 4、安全管控
        • 5、协议转换
        • 6、Api配置管理
    • 3 常见的API网关
      • 3.1 Nginx
      • 3.2 Zuul
      • 3.3 Spring Cloud Gateway
      • 3.4 Kong
      • 3.5 Traefic
      • 3.6 Tengine


1 计算机中的网关

计算机网络中,网关(Gateway) 又称网间连接器、协议转化器。网间连接器,顾名思义,也就是连接网络的机器,它能解析处理网络通信请求,将请求转发到对应的目标主机。

例如下图中网络A和网络B,网络A中的主机A1想和网络B的主机B1通信,那么A1必须先将数据发到网络A的网关A,网关A再发到网络B的网关B,接着网关B再将数据发到主机B1。

在这里插入图片描述

2 微服务环境中的API网关

2.1 背景

随着软件架构由传统的单体架构逐渐拆分为微服务架构,一个单体应用的业务系统被拆为多个服务,每个服务进行独立维护和部署。这样做降低了服务的耦合度,但是同时也带来了一些新的问题。

(1)服务通用功能冗余:鉴权、限流、日志、监控等通用功能在每个服务内单独实现,系统维护者没有全局视图管理这类通用功能。

(2)服务使用多种协议:例如公司中最常见的两种协议HTTP,GRPC。

(3)服务实例动态变化:服务独立部署后,部署的实例Ip、端口在每次部署前后会发生动态变化。

为了解决上述问题,出现了Api网关。

2.2 API网关是什么

(1) 流量入口

类比计算机网络中的网关来说,在微服务环境中,Api网关是所有服务的流量入口,网关在接收到请求后进行处理,再转发到对应的服务;服务处理请求并返回给网关数据后,网关再将数据返回给原始请求方。

在这里插入图片描述

从设计模式上来说,Api网关的设计理念类似于外观模式。Api网关封装了系统内部架构,为调用方提供一个定制的Api,提供了如鉴权、监控、负载均衡、协议转化等非业务功能的服务。

使用Api网关前,流量直接访问各个Web应用,每个应用都需要进行鉴权、限流等操作。在使用Api网关后,流量统一从网关进入,由Api网关转发到各个服务,Api网关拦截请求集中处理,进行如鉴权、协议转化、监控等功能,再转发到不同服务上。

在这里插入图片描述

2.3 API网关的主要功能

1、路由转发

通过路由功能将请求转发到目标服务。在微服务架构中,网关结合服务注册中心,调用方只需要知道网关对外暴露的Api即可访问到后端服务。

2、负载均衡

当服务有多个实例时,根据调度策略选择调用哪个实例。

3、稳定性保障
  • 限流熔断:控制客户端的访问次数和访问频率,在网关上配置一个流量阈值,当流量到达阈值后,网关能直接拦截请求。
  • 可灰度可回滚可监控:网关可以对Api变更进行稳定性控制,实现Api变更发布的可灰度可回滚可监控。
4、安全管控
  • 统一鉴权: 无论是内网接口还是外网接口,都需要进行用户身份认证。网关可以实现身份认证鉴权逻辑,统一管理用户安全认证。
  • 数据安全:网关可进行数据加解密,实现敏感数据的脱敏处理。
5、协议转换

Api网关作为流量入口,通过协议转换可以整合基于不同风格不同技术实现的微服务,对外部客户端提供统一服务。

6、Api配置管理

对不同业务的Api和服务进行配置和管理,提供基本信息配置和Api文档生成等后台管理能力。

3 常见的API网关

市面上常见Api网关有以下这些:

在这里插入图片描述

3.1 Nginx

Nginx是一个高性能的HTTP和反向代理服务器。Nginx一方面可以做反向代理,另外一方面可以做静态资源服务器,接口使用Lua动态语言可以完成灵活的定制功能。并且Nginx采用异步非阻塞方式来处理请求,这样的机制使得Nginx能够轻松应对百万级的并发请求。

3.2 Zuul

Zuul 是 Netflix 开源的一个API网关组件,它可以和 Eureka、Ribbon、Hystrix 等组件配合使用。社区活跃,融合于 SpringCloud 完整生态,是构建微服务体系前置网关服务的最佳选型之一。

Zuul 的核心是一系列的过滤器,这些过滤器可以完成以下功能:

  • 统一鉴权 + 动态路由 + 负载均衡 + 压力测试
  • 审查与监控:与边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
  • 多区域弹性:跨越 AWS Region 进行请求路由,旨在实现 ELB(Elastic Load Balancing,弹性负载均衡)使用的多样化,以及让系统的边缘更贴近系统的使用者。

Zuul 目前有两个大的版本:Zuul1 和 Zuul2

Zuul1 :基于 Servlet 框架构建,采用的是阻塞和多线程方式,即一个线程处理一次连接请求,这种方式在内部延迟严重、设备故障较多情况下会引起存活的连接增多和线程增加的情况发生。

Zuul2:运行在异步和无阻塞框架上,每个 CPU 核一个线程,处理所有的请求和响应,请求和响应的生命周期是通过事件和回调来处理的,这种方式减少了线程数量,因此开销较小。

3.3 Spring Cloud Gateway

Spring Cloud Gateway 是Spring Cloud的一个全新的API网关项目,目的是为了替换掉Zuul1,它基于Spring5.0 + SpringBoot2.0 + WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul。官⽅测试,Spring Cloud GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。

Spring Cloud Gateway可以与Spring Cloud Discovery Client(如Eureka)、Ribbon、Hystrix等组件配合使用,实现路由转发、负载均衡、熔断、鉴权、路径重写、⽇志监控等,并且Gateway还内置了限流过滤器,实现了限流的功能。

3.4 Kong

Kong是一款基于OpenResty(OpenResty 是Nginx的衍生版本,是一个基于 Nginx 的可伸缩的 Web 平台)编写的高可用、易扩展的,由Mashape公司开源的API Gateway项目。Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

Kong主要有三个组件:

  • Kong Server :基于Nginx的服务器,用来接收API请求。
  • Apache Cassandra/PostgreSQL :用来存储操作数据。
  • Kong dashboard:官方推荐UI管理工具,也可以使用 restfull 方式管理admin api。

Kong采用插件机制进行功能定制,插件集(可以是0或N个)在API请求响应循环的生命周期中被执行。插件使用Lua编写,目前已有几个基础功能:HTTP基本认证、密钥认证、CORS(Cross-Origin Resource Sharing,跨域资源共享)、TCP、UDP、文件日志、API请求限流、请求转发以及Nginx监控。

Kong网关具有以下的特性:

  • 可扩展性: 通过简单地添加更多的服务器,可以轻松地进行横向扩展,这意味着您的平台可以在一个较低负载的情况下处理任何请求;
  • 模块化: 可以通过添加新的插件进行扩展,这些插件可以通过RESTful Admin API轻松配置;
  • 在任何基础架构上运行: Kong网关可以在任何地方都能运行。您可以在云或内部网络环境中部署Kong,包括单个或多个数据中心设置,以及public,private 或invite-only APIs。

3.5 Traefic

Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。

重要特性:

  • 它非常快,无需安装其他依赖,通过Go语言编写的单一可执行文件;
  • 多种后台支持:Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd;
  • 支持支持Rest API、Websocket、HTTP/2、Docker镜像;
  • 监听后台变化进而自动化应用新的配置文件设置;
  • 配置文件热更新,无需重启进程;
  • 后端断路器、负载均衡、容错机制;
  • 清爽的前端页面,可监控服务指标。

3.6 Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

Tengine特性

  • 继承Nginx-1.18.0的所有特性,兼容Nginx的配置;
  • 支持HTTP的CONNECT方法,可用于正向代理场景;
  • 支持异步OpenSSL,可使用硬件如:QAT进行HTTPS的加速与卸载;
  • 增强相关运维、监控能力,比如异步打印日志及回滚,本地DNS缓存,内存监控等;
  • Stream模块支持server_name指令;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;

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

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

相关文章

机器学习K近邻算法——回归问题K近邻算法示例

针对“数据4.1”,讲解回归问题的K近邻算法,以V1(营业利润水平)为响应变量,以V2(固定资产投资)、V3(平均职工人数)、V4(研究开发支出)为特征变量。…

[Python学习日记-41] Python 中的列表生成式

[Python学习日记-41] Python 中的列表生成式 简介 什么是列表生成式 简介 列表是编程当中最为常用的一种数据类型,同时我们也会经常操作(增删改查)里面的数据,有的时候我们会需要大批量的修改所有列表当中的数据,本篇…

你会写SCI学术论文吗?

撰写SCI学术论文是许多科研工作者和研究生的必经之路。然而,对于许多新手来说,这可能是一个既复杂又令人望而生畏的任务。本文将为你提供一些实用的建议和步骤,帮助你更高效地完成SCI论文的写作。 1. 先中间后两头:摘要和结论最…

CCF开源发展委员会主任王怀民院士参与世界计算大会“开源生态构建数字未来”主题研讨并做重要报告...

点击蓝字 关注我们 CCF Opensource Development Committee 2024年9月25日上午,作为2024世界计算大会论坛之一的“开源生态构建数字未来”主题研讨在长沙召开。本次论坛由长沙先进技术研究院承办,由中国开源软件推进联盟、CCF YOCSEF长沙、湖南先进技术研…

自动驾驶系列—超声波雷达技术详解:自动驾驶中的短距离感知利器

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

无人机之飞行算法篇

无人机的飞行算法是一个复杂而精细的系统,它涵盖了多个关键技术和算法,以确保无人机能够稳定、准确地执行飞行任务。 一、位置估计 无人机在空中飞行过程中需要实时获取其位置信息,以便进行路径规划和控制。这通常通过以下传感器实现&#…

RemoteView(kotlin)

使用场景&#xff1a;通知栏&桌面部件 自定义通知栏 通知权限申请 manifest配置 <uses-permission android:name"android.permission.POST_NOTIFICATIONS" />权限动态申请 package com.example.kotlinlearn.Common;import android.Manifest; import an…

【笔记】Day2.4表设计说明

主键ID一般使用bigint类型 运送类型 使用比int更小的tinyint类型 eg&#xff1a;普快代表1 特快代表2&#xff08;没写反&#xff09; 关联城市 varchar 2代表京津冀 3代表江浙沪 4代表川渝 首重和续重都有小数点 故使用double 轻抛系数都为整数 故使用int 创建时间和修改…

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

自然语言到 SQL 的曙光:我们准备好了吗?

发布于&#xff1a;2024 年 10 月 08 日 各位读者&#xff0c;国庆假期已过&#xff0c;我们打工人要开启奋斗新征程了&#xff0c;今天小编也是刚上班假期综合征还没过去&#xff0c;就被抓过来读论文&#xff0c;还好我在假期没闲着&#xff0c;整理了几篇关于 NL2SQL 的最新…

Spring与Spring Boot之间的区别

Spring和Spring Boot是用于开发Java企业应用的两个主流框架。虽然它们都属于Spring生态系统的一部分&#xff0c;但是它们各自有不同的使用场景和特点。 在本文中&#xff0c;我们将探讨Spring与Spring Boot之间的差异&#xff0c;针对他们之间特性的差异&#xff0c;做一个详…

李沐 X 动手学深度学习 深度学习介绍 学习笔记

x轴是不同的模式&#xff1a;符号学---概率模型---机器学习y轴是我们想做的东西&#xff08;问题领域&#xff09;&#xff1a;感知&#xff08;了解这是什么东西&#xff0c;能看见这个物体&#xff09;---&#xff08;做&#xff09;推理&#xff08;基于我看到的东西想象未来…

dvwa:暴力破解、命令注入、csrf全难度详解

暴力破解 easy模式 hydra -L /usr/share/wordlists/SecLists-master/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/SecLists-master/Passwords/500-worst-passwords.txt 192.168.72.1 http-get-form "/dvwa/vulnerabilities/brute/:username^USER^&…

RED HAT断电重启报:“Failed to open \EFI\redhat\ grubx64.efi- Not Found“

RED HAT断电重启报错&#xff1a;"Failed to open \EFI\redhat\ grubx64.efi- Not Found"的解决办法。 问题&#xff1a;服务器断电重启导致&#xff0c;文件丢失无法正常启动操作系统。 解决方案&#xff1a; 1、准备一个Red Hat系统镜像或者启动盘挂载到服务器上&…

【AI学习】Mamba学习(五):《HiPPO: Recurrent Memory with Optimal Polynomial Projections》

SSM之后&#xff0c;就需要接着学习HiPPO了。 《HiPPO: Recurrent Memory with Optimal Polynomial Projections》 论文地址&#xff1a;https://arxiv.org/abs/2008.07669 摘要 从连续数据中学习的一个核心问题是&#xff0c;随着更多数据的处理&#xff0c;以增量方式表示累…

YOLO11训练自己的数据集(吸烟、跌倒行为检测)

YOLO11训练自己的数据集&#xff08;吸烟、跌倒行为检测&#xff09; 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用YOLO11训练自己的数据集进行吸烟、跌倒行为检测准备数据进行训练进行预测进行验证 参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏…

柯桥外语培训韩语学习考级韩语中TOPIK常用语法表达

-기 위해서는 -는 것이 좋다 为了......&#xff0c;......比较好 -는 것보다는 -는 것이 좋다 比起......&#xff0c;......比较好 -(으)려면 -아/어/야 한다 如果想......的话&#xff0c;得...... -왜냐하면 -기 때문이다 因为...... -그 이유는 -기 때문이다 理由是…

RabbitMQ快速入手

核心概念 界⾯上的导航栏共分6部分,这6部分分别是什么意思呢? 我们先看看RabbitMQ的⼯作流程: RabbitMQ是⼀个消息中间件,也是⼀个⽣产者消费者模型.它负责接收,存储并转发消息. Producer和Consumer Producer: ⽣产者,是RabbitMQServer的客⼾端,向RabbitMQ发送消息 Consume…

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件&#xff0c;而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档&#xff0c;无论相关方…

毕业设计 | ESP32-Album 开源 AIoT 智能云相框,支持 Wi-Fi 无线图传,平替小米电子相册...

数码相框主要由三个部分组成: LCD液晶显示屏&#xff0c;ESP32主控板和外框 ESP32-Album 数码相框 ESP32-Album 数码相框是一款基于乐鑫 ESP32-P4 芯片开发的高性能电子相册。凭借ESP32-P4 强大的图像及音视频处理能力&#xff0c;该设备能够实现照片、视频和音乐的播放&#x…