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

简介: ### 背景 --- + OpenResty 是一个支持lua的nginx,并且内置了一些常用的lua库。利用lua,我们就可以便捷得扩展nginx能力,甚至可以直接作为Web服务对外提供。 [主页链接](https://openresty.org/cn/) + 由下图可以看出,我们可以在各个阶段进行干预。 ![lua干预阶段](https://cloud.githubuserconten

背景


  • OpenResty 是一个支持lua的nginx,并且内置了一些常用的lua库。利用lua,我们就可以便捷得扩展nginx能力,甚至可以直接作为Web服务对外提供。 主页链接
  • 由下图可以看出,我们可以在各个阶段进行干预。
    lua干预阶段

设计


  • 本文介绍的API网关设计很简单,主要有路由,过滤器,拦截器三个部分组成。
  • 可以实现权限验证,日志记录,参数改写,限流限速等功能。
    IMAGE

实现关键


  • 这套方案实现并不复杂,主要是对nginx的干预要可控,对nginx主要的干预点有三个。

    1. init_worker_by_lua_file 注册路由信息
    2. access_by_lua_file 进行dispatch,过滤改写,权限校验和代理请求。如果代理请求的话,要记得ngx.exit将请求结束。
    3. 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 夏日来袭
目录
相关文章
|
7月前
|
安全 前端开发 应用服务中间件
每个后端都应该了解的OpenResty入门以及网关安全实战(2)
泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。 Lua 编程语言中泛型 for 循环语法格式:
111 0
|
1月前
|
缓存 应用服务中间件 Linux
如何使用OpenResty实现API网关功能
如何使用OpenResty实现API网关功能
122 0
|
7月前
|
安全 应用服务中间件 Shell
每个后端都应该了解的OpenResty入门以及网关安全实战(1)
“OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。”
111 0
|
存储 关系型数据库 应用服务中间件
Centos 7 安装 OpenResty api 网关 Orange
1,Orange网关 Orange是一个基于OpenResty的API网关。除Nginx的基本功能外,它还可用于API监控、访问控制(鉴权、WAF)、流量筛选、访问限速、AB测试、动态分流等。它有以下特性: 提供了一套默认的Dashboard用于动态管理各种功能和配置 提供了API接口用于实现第三方服务(如个性化运维需求、第三方Dashboard等) 可根据规范编写
2856 0
|
10天前
|
监控 供应链 搜索推荐
数据驱动电商:深度利用淘宝API接口掌握商品详情
本文探讨了如何利用淘宝API接口获取商品详情数据以助力电商决策。通过API,商家能获取商品标题、价格、库存等信息,从而进行市场分析、库存优化、定价策略制定及个性化推荐。步骤包括注册获取API权限、理解文档、构建数据收集流程、处理分析数据以及应用结果。示例代码展示了如何用Python调用API获取商品详情。善用API和数据驱动策略可在电商市场中取得优势。请注意遵循淘宝的API使用规范。
|
2天前
|
安全 数据挖掘 API
【实时数据】商品详情API接口系列开发
商品详情API接口系列对于电商平台至关重要,它们为开发者提供了实时、准确的商品信息,使得在线销售和展示商品变得更加高效和精准。以下是几个主要的电商平台及其商品详情API接口的介绍:
|
2天前
|
人工智能 自然语言处理 API
云栖发布:通义听悟AI能力再进化,开放API接口
云栖发布:通义听悟AI能力再进化,开放API接口
|
2天前
|
JSON 安全 API
电商开发者必读:微店商品详情API接口全解析
微店商品详情API让开发者能通过商品ID获取包括名称、价格、库存、描述和图片在内的详细信息。开发者需注册账号、获取API密钥和访问权限,并熟悉HTTP请求。请求示例为GET方法,响应数据以JSON格式返回。注意错误处理、保密性、频率限制和数据验证,以确保安全和高效使用。
|
2天前
|
搜索推荐 Java API
探索淘宝API接口:为电商业务开启无限可能
淘宝API接口是淘宝平台为第三方开发者提供的一组开放接口,通过这些接口,开发者可以获取淘宝平台上的商品信息、交易数据、用户行为等关键数据,并基于这些数据开发各种应用。淘宝API接口支持多种编程语言,如Java、Python、PHP等,方便开发者根据自己的需求进行选择和开发。