可选择

https://github.com/TykTechnologies/tyk

https://github.com/fagongzi/gateway

https://github.com/hellofresh/janus

https://github.com/Netflix/zuul

https://aws.amazon.com/api-gateway

https://getkong.org/

https://github.com/adobe-apiplatform/apigateway

https://github.com/claudiajs/claudia

http://orange.sumory.com/

主要可使用的网关大概是上述的这些(不包括某些专业级网关以及名气不够且star数量低于1K的项目)。

分析

用的最多的是网关kong,使用的是Nginx-Lua,Gateway开源,使用的插件部分免费,属于基本可用的范畴,考虑到技术栈使用的是Go,考虑使用相同语言的插件便于后期进行改造,节省人力。(虽然微服务提倡的观念是对特定的服务使用其最适合的语言进行编写,但是在考虑到不同技术栈的同步问题,使用同一技术栈在前期可能会好一点)。

在此想法的前提下,可以考虑的网关包括:

https://github.com/TykTechnologies/tyk

https://github.com/fagongzi/gateway

https://github.com/hellofresh/janus

tyk也算是比较好的,同样是该有的都有,根据使用的人数,可能是仅次于kong的,tyk是需要收取费用来进行使用的,当然若需求只需要进行单节点布置,那也可以使用Tyk,若考虑到以后进行分布式部署的情况,Tyk显然就不太适合进行后续部署了(若是能够花钱的话,当然也是没有问题的,俩节点$600每月)。

那这样就剩下gateway和janus。

gateway与Janus两者较相似,都是轻量级网关,故功能相对于一个成熟的网关来说都各有各的缺失,具体上如果针对于小型需求来说,其基本都能满足;

  • GitHub star均超过1.2K;
  • 资料,两者都属于较少,不过根据官方文档部署和基础使用没有太大问题;
  • 部署,支持docker部署,官方文档都有基础的介绍。
  • 功能,两者基本功能可能都有(例如限流,断路器等),高级功能可能都缺失,例如日志收集和消息队列,两者的文档里面好像都没有提到。
  • 周边,两者都是没有社区存在的,janus star数量会超过gateway一些;
  • 配置,janus设置使用json文件,gateway通过client模块API调用进行配置,两者都不需要重启网关;
  • 分布式支持;

根据分析来看,在项目的部署上使用哪一种,主要是看在网关本身的部署难度和使用难度上。