【翻译】Mashape是如何管理15000个API和微服务的(三)

https://stackshare.io/mashape...linux

伸缩挑战

在2013年的时候,当大批自运行的第三方API被加到Mashape的市场的时候咱们遇到了伸缩的问题。数据库

在2012 7月份和2013 7月份咱们的API数量增加了50倍。
http://i.imgur.com/0JaNhEM.png
clipboard.png后端

不止是经过咱们代理的请求数量在暴涨,Mashape开始要管理比其余市场更多的API。那时,市场有3500个公开API须要他的管理。api

API市场须要快速扩容。咱们的API代理是用Node.js构建的,后端是用重型Java构建的。他是一个单体应用架构,而且咱们的Node.js代理不能处理大流量尖峰。缓存

那时常常须要加班,并消耗了大量的AWS资源。咱们的银行帐号少了很多钱,CEO也掉了很多头发。安全

咱们须要找处处理大流量的方案,同时须要保证可靠性和安全。咱们想要从单体应用迁移到更灵活的方式。服务器

http://i.imgur.com/C75mgO7.png
clipboard.png微信

咱们一直想建立咱们本身的API网关;目标是如下内容:架构

  1. 以月和年为单位可预测的稳定性,不是天。并发

  2. 容易在多个地理位置进行扩展并保持高效,并且以极小的开销。

  3. 经过一些简单插件达到组件化和易扩展。

  4. 独立:支持各类环境,框架和语言。

  5. 能方便使用RESTful API进行配置。

基本上就是API管理界的“ElasticSearch”。咱们的CTO开始寻找方案,并偶然遇到了一位CloudFlare的工程师,将咱们带入了神奇的OpenResty世界。在Nginx上层构建让开发者能够用Lua扩展Nginx功能,Lua是一种被许多大流量网站使用的嵌入式脚本语言。

CloudFlare用Lua脚本构建安全和缓存。我想咱们能够作一样的事,只是聚焦在API和微服务管理。Nginx已是公认的稳定和值得信赖的HTTP服务器,这对于咱们的原始需求很是合适。使用了OpenResty后,咱们开始构建Kong。

Kong的诞生(API网关)

2013年,Mashape使用Nginx/OpenResty来实现市场上发布API的功能。计费、鉴权、流控和速率限制已经变成了用Lua写的定制OpenResty插件。咱们叫他Kong(是的,像“金刚”,就像咱们本身的名字:MashAPE)。
http://i.imgur.com/2azlel3.png

今天Kong能有效的管理约15000 API。为咱们内部的微服务和咱们市场上用户的API服务,处理峰值流量,高并发场景,每个月能处理十亿以上API调用。

咱们构建了咱们本身的“ElasticSearch”来作API管理;很像是Elastic的方式,用RESTful接口在Lucene上层加了一层语法糖,Kong就是在Nginx上包装了一层。

下面是一些在应用市场上操做Kong的例子。

当一个API从图形界面被填加到Mashape平台上,它会发送一条POST请求给Kong:

curl -i -X POST \
  --url http://localhost:8001/apis/ \
  --data 'name=mockbin' \
  --data 'upstream_url=http://mockbin.com/' \
  --data 'request_host=mockbin.com'

而后,基于API提供者的须要,一组各式各样的插件会被添加到他的上层。举个例子,若是用户须要秘钥验证:

curl -i -X POST \
  --url http://localhost:8001/apis/mockbin/plugins/ \
  --data 'name=key-auth'

用户管理很容易;Consumer对象容许一个抽象实体表明用户,应用,客户端或者访问API的系统。他们能够被很容易的用RESTful接口建立和管理。

curl -i -X POST \
  --url http://localhost:8001/consumers/ \
  --data "username=Jason"

Kong的RESTfulAPI容许咱们管理市场上成千上万的API。使用简单专注的代码库,咱们能保持咱们的微服务和系统互相独立。Kong自己,基于其插件的本质,能够被描述为为服务架构的典范。在他的核心,只有不超过千来行代码,包括处理数据库抽象,路由和插件管理。插件能够保存在不一样的代码库并在一个被代理请求的任意生命周期已几行代码的代价插入。咱们对这种很是独特的API管理网关感到自豪。

Kong与2015年4月(http://techcrunch.com/2015/04... 上线。那时经历了部分重写 - 并同时在创建了一个很强的用户和开发者社区。咱们很是感谢全世界开发者的贡献,并为咱们决定开源Kong而欣慰。咱们经过改善许多用OpenResty的Lua包来回馈社区。

咱们为许多linux发行版和云提供商生成了Kong的包,方便安装和部署。咱们作成功的发行版是基于Docker的Kong,从发布开始已经有180000的下载量。

将来的路

每月,咱们都会向Kong发布更多的代码做为咱们支持开源API开发者社区的一部分。咱们努力让Kong达到1.0的里程碑,这能让全部人感到这个内部工具带给咱们公司和社区的愉悦。

咱们也在许多其余产品上工做,这些产品是咱们提供给API开发者的服务家族的一部分,咱们已经等不及下个月通告咱们正要作的事。

咱们的愿景

在咱们的办公室咱们有一副第一辆福特生产线的巨型照片,做为咱们的灵感。

100年前第二次工业革命开始了。不少新发明中有两个最特别的:电力和装配线(感谢电力)。这个组合使大规模产品生产第一次实现。结果就是极大的下降了将产品推向市场的成本和时间。大规模生产迅速成为全球现象,开办价值上亿的公司。它改变了世界。

咱们看到软件工业的今天与历史的关联:电力就是云计算,装配线就是API,你能够快速取得你须要构建你产品的组件/服务。这是历史的重现,咱们想要作下一次革命的先锋,再一次改变世界。

http://i.imgur.com/kxGLik7.png
clipboard.png


本文来自微信公众号「麦芽面包,id「darkjune_think」
转载请注明。
微信扫一扫关注公众号。
图片描述

相关文章
相关标签/搜索