阅读 276

有缘人,这里有个藏有各种开源高性能网关项目的锦囊。

这里只给出采用GoNginx+Lua实现的网关😁

Go

  1. Goku API Gateway (中文名:悟空 API 网关) [官网]
  • 运行在企业系统服务边界上的微服务网关
  • 拥有完善的使用指南和二次开发指南,代码使用纯 Go 语言编写,拥有良好的性能和扩展性,并且内置的插件系统能够让企业针对自身业务进行定制开发
  • 官网提供的性能报告 点评: 国内首款开源企业级,开源版基本不能投产,商业版功能丰富。(GPL3.0)
  1. Tky [官网]
  • 一个轻量级的开源API网关,管理平台使您能够控制访问API的人员,访问API以及访问API的方式
  • 国外开源 点评: 功能较全,但是授权方面是个问题。(MPL v2.0)
  1. Manba
  • 一个基于HTTP协议的restful的API网关。可以作为统一的API接入层。
  1. Gloo [官网]
  • 一个功能丰富、本地的 kubernetes 入口控制器和下一代 API 网关
  • 在功能级路由、对遗留应用程序、微服务和无服务器的支持、发现能力、众多特性以及与领先的开源项目的紧密集成等方面都非常出色
  1. Ambassador [官网]

建立在Envoy Proxy上的开源Kubernetes-native网关

  1. KrakenD [官网]

基于中间件的超高性能开源 API 网关

  1. fagongzi

fagongzi Gateway 是一个 Go 实现的功能全面的 API 网关,自带了一个 Rails 实现的 Web UI 管理界面。

  1. Janus

Janus 是一个轻量级的 API 网关和管理平台,能实现控制谁、什么时候、如何访问这些 REST API,同时它也记录了所有的访问交互细节和错误。使用 Go 实现 API 网关的一个好处在于,一般只需要一个单独的二进制文件即可运行,没有复杂的依赖关系。

Nginx+Lua

  1. Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

  1. OpenResty

OpenResty 基于 Nginx,集成了 Lua 语言和 Lua 的各种工具库、可用的第三方模块,这样我们就在 Nginx 既有的高效 HTTP 处理的基础上,同时获得了 Lua 提供的动态扩展能力。因此,我们可以做出各种符合我们需要的网关策略的 Lua 脚本,以其为基础实现网关系统。

  1. Kong

Kong 基于 OpenResty,是一个云原生、快速、可扩展、分布式的API 网关。Kong 开源于 2015 年,核心价值在于其高性能和扩展性。从全球 5000 强的组织统计数据来看,Kong 是现在依然在维护的、在生产环境使用最广泛的网关

  1. ABTestingGateway
  • ABTestingGateway 是一个可以动态设置分流策略的网关,关注与灰度发布相关的领域,基于 Nginx 和 ngx-lua 开发,使用 Redis 作为分流策略数据库,可以实现动态调度功能。
  • ABTestingGateway 是新浪微博内部的动态路由系统 dygateway 的一部分,目前已经开源。在以往的基于 Nginx 实现的灰度系统中,分流逻辑往往通过 rewrite 阶段的 if 和 rewrite 指令等实现,优点是性能较高,缺点是功能受限、容易出错,以及转发规则固定,只能静态分流。
  1. 3scale [官网]

红帽 3scale API 管理能让您轻松地管理 API。其功能和优势有:API流量控制、API项目管理、OpenShift集成、跨所有组件提供云支持、红帽Fuse集成以及全面的安全性。

结语

以上是本人为开发高性能网关做的一次搜集整理,花了近3个小时。料想到可能会有其他人碰到这种情况,所以在此借助掘金这个平台分享出来吧。如有遗漏,欢迎补充,非常感谢。