揭秘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 循环语法格式:
119 0
|
1月前
|
缓存 应用服务中间件 Linux
如何使用OpenResty实现API网关功能
如何使用OpenResty实现API网关功能
133 0
|
7月前
|
安全 应用服务中间件 Shell
每个后端都应该了解的OpenResty入门以及网关安全实战(1)
“OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。”
115 0
|
存储 关系型数据库 应用服务中间件
Centos 7 安装 OpenResty api 网关 Orange
1,Orange网关 Orange是一个基于OpenResty的API网关。除Nginx的基本功能外,它还可用于API监控、访问控制(鉴权、WAF)、流量筛选、访问限速、AB测试、动态分流等。它有以下特性: 提供了一套默认的Dashboard用于动态管理各种功能和配置 提供了API接口用于实现第三方服务(如个性化运维需求、第三方Dashboard等) 可根据规范编写
2856 0
|
1月前
|
运维 网络协议 安全
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
141 1
|
7月前
|
负载均衡 应用服务中间件 API
微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul
微服务技术系列教程(25) - SpringCloud- 接口网关服务Zuul
77 0
|
1月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
95 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
6月前
|
负载均衡 Cloud Native Java
【云原生】Spring Cloud Alibaba 之 Gateway 服务网关实战开发
【云原生】Spring Cloud Alibaba 之 Gateway 服务网关实战开发
760 0
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
179 0