揭祕ZSearch2.0—基於OpenResty的API閘道器設計

jxy發表於2017-08-24

背景


  • 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 夏日來襲


相關文章