
文章插图
日志记录衍生的功能
流行 API 网关对比
在介绍了 API 网关的功能以后 , 再来看看目前几个流行的 API 网关项目 。看看他们各自的特点 , 并且把他们做一个简单的比较 。这些网关目前都是开源的 , 大家可以有选择地在项目中使用 。
Kong
Kong 是 Mash ape 公司的开源项目 , 它是一个在 Nginx 中运行的 Lua 应用程序 , 并且可以通过 Lua-Nginx 模块实现扩展 。
所以 , 可以通过插件集合的方式定制功能 , 例如:HTTP 基本认证、密钥认证、CORS(Cross-origin Resource Sharing , 跨域资源共享)、TCP、UDP、日志、API 限流、请求转发以及监控 , 都是目前已有的插件 。
由于是基于 Nginx 的 , 所以可以对网关进行水平扩展 , 来应对大批量的网络请求 。

文章插图
Kong 架构图
Kong 主要有三个组件:
- KongServer :基于 Nginx 的服务器 , 用来接收 API 请求 。
- ApacheCassandra/PostgreSQL:用来存储操作数据 。
- Kongdashboard:UI 管理工具 。

文章插图
Traefik 架构图
Traefik 是 HTTP 反向代理和负载均衡器 , 可以轻松部署微服务 , 可以与现有的组件(Docker、Swarm , Kubernetes , Marathon , Consul , Etcd)做集成 。
因为支持动态配置 , 所以它的伸缩性很好 。不过它只支持 HTTP、HTTPS 和 GRPC 。如果你需要 TCP 负载均衡 , 那么您需要选择其他方案了 。
Ambassador

文章插图
Ambassador 架构图
Ambassador 是一个基于 Envoy Proxy 构建的 , Kubernetes 原生的开源微服务网关 。
它在构建之初就致力于支持多个独立的团队 , 这些团队需要为最终用户快速发布、监控和更新服务 。
Ambassador 还具有 Kubernetes Ingress 和负载均衡的能力 。它支持处理 Kubernetes Ingress Controller 和负载均衡等功能 , 可以与 Istio 无缝集成 。
Zuul

文章插图
Zuul 2 结构图
Zuul 是 Spring Cloud 全家桶中的微服务 API 网关 。所有从设备或网站来的请求都会经过 Zuul 到达后端的 Netflix 应用程序 。
作为一个边界性质的应用程序 , Zuul 提供了动态路由、监控、弹性负载和安全功能 。包括 Zuul1 和 Zuul2 两个版本 。
介绍了几个开源 API 网关的基本信息以后 , 我们从几个维度对他们进行比较:

文章插图
从开源社区活跃度来说 , Kong 和 Traefik 较好;从成熟度来看 , 较好的是 Kong、Traefik;从架构优势的扩展性来看 , Kong 有丰富的插件 , Ambassador 也有插件但不多 , 而 Zuul 是需要自研 。
但 Zuul 由于与 Spring Cloud 集成 , 如果使用 Spring Cloud 的小伙伴可以考虑使用 。
总结
API 网关是系统内外通讯的中介者 。从定位上来说它服务 WebApp , MobileApp , 合作伙伴 OpenAPI , 企业内部可扩展 API , 以及 IOT 设备 。
从架构设计角度来说 , 分为 Gateway-Core(核心)、Gateway-Admin(管理)、Gateway-Monitor(监控)三部分 。
API 网关需要注意的技术原理有 , 协议转换 , 链式处理以及异步请求 。它的应用比较广泛 , 例如:负载均衡 , 路由选择 , 流量控制 , 统一鉴权 , 熔断降级 , 发布测试 , 缓存数据 , 日志记录等 。
比较流行的开源 API网关有 Kong , Traefik , Ambassador , Zuul 。从使用上来说他们各有千秋 , 可以根据项目的情况选取 。
推荐阅读
- 合理饮食 喝汤的讲究有哪些
- 穿衣搭配|气质优雅的女人,春夏都会穿西装,这样搭干练又高级
- 老板办公室风水有哪些讲究
- 铁观音茶叶有什么功效,铁观音的冲泡时间有什么讲究
- 女人上半身肥胖怎么减,女人睡眠不好怎么调理其实女人失眠的治疗方法是这样
- 陈皮的食用方法,陈皮的功效与作用及食用方法陈皮这样吃才能治病
- 风水玄机 床上风水有讲究 床上风水会危害身体健康
- 风水趣谈厕所风水有讲究 看看几种常见破财厕所风水
- 客厅沙发风水有哪些讲究?
- 新房风水装修禁忌和入住讲究
