马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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企服之家,中国第一个企服评测及商务社交产业平台。 |