背景
- OpenResty 是一个支持lua的nginx,并且内置了一些常用的lua库。利用lua,我们就可以便捷得扩展nginx能力,甚至可以直接作为Web服务对外提供。 主页链接
- 由下图可以看出,我们可以在各个阶段进行干预。
设计
- 本文介绍的API网关设计很简单,主要有路由,过滤器,拦截器三个部分组成。
- 可以实现权限验证,日志记录,参数改写,限流限速等功能。
实现关键
这套方案实现并不复杂,主要是对nginx的干预要可控,对nginx主要的干预点有三个。
- init_worker_by_lua_file 注册路由信息
- access_by_lua_file 进行dispatch,过滤改写,权限校验和代理请求。如果代理请求的话,要记得
ngx.exit
将请求结束。 - balancer_by_lua_file 根据dispatch信息路由到不同真实负载服务器上
参考资料
让搜索更简单
- ZSearch2.0 服务申请入口:http://search.alipay.com/看我们这二级的域名就知道重要性了吧。
- 蚂蚁中间件的ZSearch2.0,核心采用了ElasticSearch,原生支持所有的ElasticSearch的操作,具备强大的数据检索和分析能力,自5月份投入试运行以来,已线上服务16个业务方,数据规模在130TB,近2K亿的文档数,QPS稳定在30W左右。 通过数月不断的观察、调优、测试,如今已达到正式上线的标准,欢迎同学们踊跃使用,提出宝贵意见。
- 后续我们会对Elasticsearch和Lucene做持续优化,欢迎大家来使用,并提出你的需求。
- 有任何问题可以联系我们(@善仁(xinyu.jxy),@丰坚(yinghao.wyh),@十倍(lvliang.ll),@城破(huabiao.mahb) )
- 详细介绍请参阅ZSearch2.0 夏日来袭