点赞
评论
收藏
分享
举报
选择合适的 API 网关模式,实现有效的 API 交付
发表于2023-03-14 13:50

浏览 1.8k

文章标签

原文作者:Elle Poole Sidell of F5
原文链接:选择合适的 API 网关模式,实现有效的 API 交付
转载来源:NGINX 官方网站

NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

ProgrammableWeb 的 API 目录自 2005 年以来一直在跟踪外部可用的 API,这个数字在 2019 年 6 月突破了 22,000 大关。在此之前的 4 年里,发布的 API 数量增长了近 60%,这表明 API 经济不仅增长强劲,而且还将持续下去。

API 是许多业务的核心,能够创造巨大的价值和收入。现在,IT 组织要想保持领先,就必须找到一种管理和控制 API 访问的方法,而且这一需求比以往任何时候都迫切。

API 管理的重要性

随着企业开始从单体应用过渡到基于微服务的应用,他们还意识到 API 不仅可以促进高效的数字化通信,还可以成为新的收入来源。例如,Salesforce.com 有一半以上的年收入来自其 API,而 Expedia.com 有近 90% 的收入依赖于 API 经济。

兹事体大,企业不能容忍其 API 架构出现任何闪失,他们必须要确保 API 具备出色的性能、可控性和安全性。

API 网关 ≠ API 管理

虽然“API 网关”和“API 管理”这两个词语有时被互换使用,但要注意其中的区别。

API 网关是 API 访问权限的“门卫”,负责保护和管理 API 使用者与暴露这些 API 的应用之间的流量。API 网关通常负责处理身份验证和授权、请求路由、速率限制以避免系统过载、防护 DDoS 攻击、卸载 SSL/TLS 流量以提高性能以及处理错误或异常。

API 管理是指在 API 的整个生命周期内管理 API 的过程,包括定义和发布 API、监控 API 性能、分析使用模式以创造最大业务价值等。

常见的 API 网关部署模式

那么,如何才能有效交付 API 呢?

作为全球首屈一指的 API 网关,NGINX 交付了当今网络上超过一半的 API 流量。虽然模式没有对错之分,但有一些 API 网关模式是最常用的,我们在此进行了总结。

集中式边缘网关

这是最常见的 API 网关模式,采用了传统的应用交付控制器 (ADC) 架构。在这种模式下,网关几乎可以处理所有事情,包括:

  • SSL/TLS 卸载
  • 身份验证
  • 授权
  • 请求路由
  • 速率限制
  • 请求/响应操作
  • Facade 路由

当从集中治理的单体应用暴露应用服务时,这种方法非常合适,但对于微服务架构或是总有频繁更改的情况就差点意思了 —— 传统边缘网关都是针对南北向流量进行优化,并不能高效处理分布式微服务环境中产生的大量东西向流量。

双层网关

随着服务逐渐变得小型化和分散化,许多企业转向了双层(多层)网关模式,将多个网关的角色分离开来。

这种方法将安全网关作为第一层,以管理:

  • SSL/TLS 卸载
  • 身份验证
  • 集中式连接和请求日志记录
  • 跟踪注入

将路由网关作为第二层,以处理:

  • 授权
  • 服务发现
  • 负载均衡

在一些情况下,我们需要考虑分散的 service 的灵活性和功能独立扩展的需求。双层网关模式最适合这样的情况。但是,当有多个团队管理不同的环境和应用时,这种方法可能会带来问题,因为它不支持分布式控制。

微网关

微网关模式建立在双层网关方法之上,为各个 DevOps 团队提供了专用网关,这不仅可以帮助他们管理 service 之间的流量(东西向流量),而且还支持在不影响其他应用的情况下进行变更。

此模式在边缘提供了以下功能:

  • SSL/TLS 卸载
  • 路由
  • 速率限制

然后企业再为每个 service 添加独立的微网关,以管理:

  • 负载均衡
  • 服务发现
  • 每个 API 的身份验证

尽管微网关的设计初衷是与微服务协同工作,但它们也为实现一致性和可控性增加了阻力。每个微网关可能都有一组不同的策略和安全规则,并且需要整合多个 service 的监控信息和指标。微网关很容易适得其反 —— 原本是为了尽量“小”,结果却往往需要根据业务目标实施全量的 API 配置。

per-pod 网关

per-pod 网关模式将代理网关嵌入到了各个 pod 或容器中,从而完善了微网关模式。网关负责管理到 pod 的入向流量,应用了身份验证和速率限制等策略,然后将请求传递到本地微服务。

per-pod 网关模式不执行任何路由或负载均衡,因此通常与上文提到的任一模式结合部署。具体来说,您可能会使用 per-pod 网关执行以下部分或全部功能:

  • pod 中应用的 SSL/TLS 卸载
  • 跟踪和指标生成
  • 身份验证
  • 速率限制和队列
  • 错误处理,包括断路器式的错误消息

per-pod 网关通常是轻量级的,并且其配置是静态的。它仅将流量转发到本地微服务实例,因此当应用拓扑发生变化时不需要进行重新配置。如果需要更改其中一项策略,则可以使用新的代理配置重新部署微服务 pod。

Sidecar(边车)网关和 service mesh(服务网格)

Sidecar 网关模式将网关部署为微服务的出入向代理,这允许 service 直接进行相互通信,sidecar 代理则负责处理和路由入站和出站的通信。

此模式使用边缘网关管理:

  • SSL/TLS 终止
  • 客户端身份验证
  • 集中 logging
  • 跟踪注入

然后使用 sidecar 代理作为每个 service 的入口点,以提供:

  • 出站负载均衡
  • 服务发现集成
  • 服务间身份验证
  • 授权

sidecar 模式显著增加了控制平面的复杂性,因为它只有在了解到整个应用拓扑后才能根据需要执行出站路由和负载均衡,然而应用拓扑却经常有变更。此外它还增加了数据平面的复杂性,因为 sidecar 代理必须透明地拦截来自本地应用的所有出站请求。该模式在基于 sidecar 的 service mesh 模型上最容易实现,此类 service mesh 提供了 sidecar 代理、注入、流量捕获以及模式所需的集成式控制平面。sidecar 代理模式正逐渐成为 service mesh 中最流行(尽管仍需完善)的方法,对从 service mesh 控制平面配置各个代理的多个团队实现基于角色的访问控制。


NGINX 支持有效的 API 交付

如今,技术是实现创新、增长和盈利的主要差异化优势。API 是现代数字业务发展的“核心驱动”,支持企业访问服务和数据,从而为客户、内部用户和合作伙伴提供更出色的体验。您拥有的 API 越多,使用合适的现代 API 管理解决方案来简化、扩展和保护 API 就变得越重要。

NGINX 提供了快捷的 API 管理解决方案,将 NGINX Plus 作为 API 网关的卓越功能和性能与 NGINX Controller 相结合,使团队能够在多云环境中大规模定义、发布、保护、监控和分析 API。

阅读我们的系列博文《将 NGINX 部署为 API 网关》,了解不同用例的详细配置、如何保护生产环境中后端 API 服务的安全以及如何将 NGINX 开源版和 NGINX Plus 部署为 gRPC 服务的 API 网关。


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源:

开源社区官网:https://www.nginx.org.cn/

微信公众号:https://mp.weixin.qq.com/s/XVE5yvDbmJtpV2alsIFwJg


已修改于2023-03-14 13:50
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
249
文章
21
问答
198
粉丝
相关文章
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 7k
  前三周学习了陶辉老师的“NGINX基础培训系列课程”,感觉受益良多,在这里想把一些知识点记录一下,和大家分享一下知识点,也方便日后的随手查看,温故知新。  首先,我们了解到了Nginx的版本,Nginx发布版本分为主线版本和稳定版本,区分两个版本也非常简单,主线版本版本号为单数,比如1.19,稳定版本为双数,比如1.18,今天我要说的是稳定版本,这个版本会尽量少的减少Nginx的bug问题,适用于生产环境,这里我不建议使用Nginx和其他软件一样在生产环境中落后一个或多个大版本使用,之前生产环境做过漏扫,发现我们编译自带的Nginx版本为:nginx/1.13.3(查询命令为nginx-V),结果出现了多个漏洞,四个高危和一个中危漏洞:        通过升级Nginx到稳定版最新版本后修复!  其次,是Nginx发行版本的选择,目前比较流行的有:nginx、nginxplus、Tengine、openresty、ope
点赞 1
浏览 3.9k
感谢您参加“NGINX从入门到精通进阶系列培训”!以下为培训的问答、课件和录像,希望您能通过此培训学有所得,祝学习进步!>问与答:- 基础篇+高级篇 - 应用篇+实战篇(New)>课件(PPT):基础篇:-NGINX概要、安装、配置:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-Setup.pdf-NGINX日志、运维:https://interact.f5.com/rs/653-SMC-783/images/cnfeb22-nginxcorecourse-maintenance.pdf高级篇:-NGINX变量、API:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-API.pdf-NGINXSSL、NJS:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-SSL.pdf
点赞 10
浏览 5.3k