网关是一种能够在不同网络或协议之间进行数据交换的设备或服务器。网关可以实现不同网络之间的互联互通,也可以实现不同协议之间的转换和适配。这是网关在网络中的原始含义,延伸含义就是在两个系统间进行访问控制。在应用层面,一般是指七层应用层协议的路由入口。
网关发展
随着业务的发展, 规模和复杂性与日俱增. 业务上需要进行更多的组织拆分, 功能拆分, 进而形成了大量的服务, 为了对这些服务进行统一的管理, 就有了网关
的概念.
对于流量的入口, 我们一般称之为流量网关, 流量网关主要用于控制和管理网络流量,包括负载均衡、流量限制、数据过滤等功能。它通常位于网络架构中的最前端,作为应用程序和网络之间的入口。流量网关的主要作用是确保网络的可用性和可靠性。
各个业务域的入口一般称为API网关, API网关是一种集成了配置发布、环境管理、接入认证,用户鉴权、访问控制等功能的API管理和服务治理的工具。使用API网关托管API,即可高效,安全、低成本的管理服务,同时还提供API的转换、聚合、过滤器等服务。API网关作为请求的单一入口点,将请求分配给相应的服务,然后收集结果并将其传递给请求者。而不是让客户单独请求访问每项微服务。
网关 | 痛点 | 优势 | 语言 |
---|---|---|---|
NGINX | 1. 修改配置需要 Reload 才能生效,跟不上云原生的发展。 | 1. 老牌应用; 2. 稳定可靠,久经考验; 3. 高性能。 | c |
Apache APISIX | 1. 文档不够丰富和清晰,需要待改进。 | 1. Apache 基金会顶级项目; 2. 技术架构更贴合云原生; 3. 性能表现优秀; 4. 生态丰富; 5. 除了支持 Lua 开发插件外,还支持 Java、Go、Python、Node 等语言插件。 | c,lua |
Kong | 1. 默认使用 PostgreSQL 或 Cassandra 数据库,使得整个架构非常臃肿,并且会带来高可用的问题; 2. 路由使用的是遍历查找,当网关内有超过上千个路由时,它的性能就会出现比较急剧的下降; 3. 一些重要功能是需要付费的。 | 1. 开源 API 网关的鼻祖,用户数众多; 2. 性能满足大部分用户的需求; 3. 生态丰富; 4. 支持 Lua 和 Go 开发插件。 | c,lua |
Envoy | 1. 使用 C++,二次开发难度大; 2. 除了 C++ 开发 filter 外,还支持 WASM 和 Lua。 | 1. CNCF 毕业项目 更适合服务网格场景多语言架构部署。 | c++ |
Spring Cloud Gateway | 1. 虽然 Spring 社区成熟,但是 Gateway 资源缺乏。 | 1. 内置了非常多的开箱即用功能,并且都可以通过 SpringBoot 配置或者手工编码链式调用来使用; 2. Spring 系列可扩展性强,易配置,可维护性好; 3. Spring 社区成熟; 4. 简单易用; 5. 对于 Java 技术栈来说方便。 | java |
traefik | GC 抖动, p99时延抖动 | 功能扩展方便, 性能高 | golang |
百度 BFE | GC 抖动, p99时延抖动 | 功能扩展方便, 性能高 | golang |
api网关对比 |
网关功能总结
- 请求路由
- 负载均衡
- 动态上游
- 热更新(不断连接)
- 配置中心
- 熔断, 限流, 降级
- 自定义逻辑(灰度发布,服务发现,HTTP 基本认证,密钥认证,CORS,私有协议扩展)
- 可观测性
- 混合架构(虚拟机与云原生容器)
网关融合
目前的架构基本上南北用流量网关接入, 微服务间东西流量用api网关来负载. 随着安全, 合规审计的之类的垂直需求愈加频繁的背景下, 东西南北网关融合的趋势愈加明显. 既想要流量网关的性能, 又想要api网关的灵活和扩展诉求, 随之而来的是云原生的网关, 对业务网关和流量网关以及安全网关的进行了高度集成. 显著地降低了部署和运维成本.
参考资料
什么是API网关?
Deploying NGINX as an API Gateway, Part 1
Cloudflare弃用NGINX,改用Rust编写的Pingora,你怎么看?
亿级流量架构网关设计思路,常用网关对比
亿级流量架构网关设计思路,常用网关对比2
https://edgar615.github.io/api-gateway-flow.html
交易系统: 百亿流量微服务网关的设计与实现
亿级流量架构之网关设计思路,常见网关对比
限流
redis + lua 限流 算法 滑动窗口 漏桶 令牌桶
shenyu gateway 限流 lua redis
视频资料
人月聊IT(所在公司开发了一个云原生的网关项目, 现在无限期停止维护, 公司主要做项目交付) 一张图讲解微服务-注册中心,微服务网关和API网关区别
IT老齐的咨询建议:
上万租户SAAS系统大规模Nginx动态路由优化方案
【IT老齐321】20分钟上手高性能动态网关APISIX
apisix conf 相关分享
Apisix集中式流控与Sentinel分布式流控
apisix 故障排查: Apache APISIX 在希沃网关的应用与实践
vivo 用数据库替换etcd: Apache APISIX 落地实践分享
etcd initial cluster status 开始检查这个状态设置为空或者为new, 以后每次部署设置为 exists: 景顺长城基于 Apache APISIX 在金融云原生的生产实践
基于 Apache APISIX 的蓝鲸 API 网关设计与应用
爱奇艺基于 Apache APISIX 的 API 网关落地实践
Apache APISIX在有赞的落地实践
概念对比
温铭: Apache APISIX 的全流量 API 网关统筹集群流量
- https://github.com/cloudnativeto/academy/tree/master/webinar/
- 基于Apache APISIX的全流量API网关-温铭.pdf
- https://www.bilibili.com/video/BV1Gt4y1q7qC/?vd_source=8f2e8d9afb969c72b313832ed92dc193
NGINX 与 Kong 的痛点
API 网关 Kong 实战 - 视频: API 网关 Kong 实战
云原生 API 网关 APISIX 入门教程 - 视频: 云原生 API 网关 APISIX 入门教程
- 云原生API网关Apache APISIX实战教程,Nginx和Kong做不到的我APISIX来干
多层网关已成过去,网关多合一成潮流,网关改造正当时|Higress 1.0 正式发布
开源云原生融合网关 Hango 的最新实践与思考
国内航空巨头如何从 NGINX 迁移至 APISIX?
Higress nginx apisix: 云原生网关当道,三大主流厂商如何“竞技”?
阿里巴巴开源下一代云原生网关 Higress:基于 Envoy,支持 Nginx Ingress 零成本快速迁移
Edith网关——面向小红书亿级DAU的网关大规模实践-陈华昌
MSE: 云原生网关将流量网关、微服务网关、安全网关三合一,被誉为下一代网关
hango: 为什么我们需要全能力云原生网关
网易hango
Loggly: Benchmarking 5 Popular Load Balancers: Nginx, HAProxy, Envoy, Traefik, and ALB
slack: Migrating Millions of Concurrent Websockets to Envoy
限流应用
kong golang: 服务限流在多项目下的方案设计与落地实践
java网关
业务网关的一些场景: 业务网关的落地实践
得物自研API网关实践之路
美团: 百亿规模API网关服务Shepherd的设计与实现
美团网关服务编排_流程引擎:美团服务体验平台对接业务数据的最佳实践-海盗中间件
放弃 Spring Cloud Gateway!Apache APISIX 在「还呗」业务中的技术实践
如何设计一个亿级网关(API Gateway)?
唯品会API网关设计与实践
csdn: 100万级连接,石墨文档WebSocket网关如何架构?