什么是API网关(API Gateway)?

打印 上一主题 下一主题

主题 1710|帖子 1710|积分 5130

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 什么是API网关(API Gateway)?

         在微服务体系结构中,客户端可能与多个前端服务进行交互。 

        API 网关位于客户端与服务之间。 它充当反向署理,将来自客户端的哀求路由到服务。 它还可以实行各种横切使命,例如身份验证、SSL 终止和速率限制。 如果未摆设网关,则客户端必须直接向前端服务发送哀求。 但是,直接向客户端公开服务会造成一些潜在题目:


  • 可能需要编写复杂的客户端代码。 客户端必须跟踪多个闭幕点,并以弹性方式处置惩罚故障。
  • 会在客户端与后端之间造成耦合。 客户端需要知道怎样分解各个服务。 因此,客户端维护和服务重构会变得更困难。
  • 单个操作可能需要调用多个服务。 这可能导致客户端和服务器之间的多次网络来回,从而显著增长了延迟时间。
  • 每个面向公众的服务必须处置惩罚身份验证、SSL 和客户端速率限制等题目。
  • 服务必须公开客户端友好的协议,例如 HTTP 或 WebSocket。 这就限制了通讯协议的选择。
  • 包含公共闭幕点的服务是潜在的受攻击面,必须得到强化。
        网关可以通过将客户端与服务分开,来资助办理这些题目。 网关可以实行许多不同的功能,但我们不一定需要所有这些功能。 这些功能可分别到以下计划模式:


  • 网关路由: 使用网关作为反向署理,通过第 7 层路由将哀求路由到一个或多个后端服务。 网关为客户端提供单一闭幕点,可资助将客户端与服务分开。
  • 网关聚合:使用网关可将多个单独哀求聚合成一个哀求。 当单个操作需要调用多个后端服务时,可以应用此模式。 客户端将一个哀求发送到网关。 网关会将哀求分派到不同的后端系统,然后聚合效果并将其发回给客户端。 这有助于减少客户端与后端之间的通讯频率。
  • 网关卸载:使用网关可将单个服务的功能卸载到网关,尤其适合用于办理横切题目。 可能有效的做法是将这些功能整合到一个位置,而不是让每个服务负责实现这些功能。 对于需要专业技能才能正确实现的功能(例如身份验证和授权),这种做法尤其有效。
        下面是可卸载到网关的一些功能示例:


  • SSL 终止
  • Authentication
  • IP 允许列表或阻止列表
  • 客户端速率限制(限制)
  • 日志记录和监督
  • 响应缓存
  • Web 应用程序防火墙
  • GZIP 压缩
  • 为静态内容提供服务

2.选择网关技能

        现在的一些网关技能:traefix、Nginx、OpenResty、Kong、Zuul、Spring Cloud Gateway等。下面主要介绍traefix、Nginx、OpenResty三种网关技能。
2.1traefix

        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镜像;
  • 监听后台变化进而主动化应用新的配置文件设置;
  • 配置文件热更新,无需重启历程;
  • 后端断路器、负载均衡、容错机制;
  • 清爽的前端页面,可监控服务指标。
 2.2Nginx


        Nginx是⼀款轻量级的Web服务器、反向署理服务器,由于它的内存占⽤少,启动极快,⾼并发能⼒强,在互联⽹项⽬中⼴泛应⽤。一般Nginx的上层还有一个负载均衡器,如LVS,对Nginx做负载均衡。
        重要特性:

  • Nginx以事件驱动的⽅式编写,以是有⾮常好的性能;
  • 在性能上,Nginx占⽤很少的系统资源,能⽀持更多的并发连接,达到更⾼的访问服从;
  • 在功能上,Nginx是优秀的署理服务器和负载均衡服务器;
  • 在安装配置上,Nginx安装简朴、配置灵活;
  • Nginx支持热摆设,启动速度特别快,可以在不间断服务的情况下对软件版本或配置进行升级;nginx -s reload。
        在微服务的体系之下,Nginx被越来越多的项目所采用,作为网关来使用,共同Lua做限流、熔断等控制。
 2.3OpenResty


        OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处置惩罚超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
        OpenResty® 通过汇聚各种计划精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
        OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充实利用 Nginx 的非阻塞 I/O 模子,不仅仅对 HTTP 客户端哀求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表