揭秘ZSearch2.0—基于OpenResty的API网关设计

    xiaoxiao2021-04-16  239

    背景


    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信息路由到不同真实负载服务器上

    参考资料


    OpenResty最佳实践

    让搜索更简单


    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 夏日来袭 相关资源:Python-一个基于OpenResty的仿Yii的web框架

    最新回复(0)