閱讀676 返回首頁    go 阿裏雲 go 技術社區[雲棲]


揭秘ZSearch2.0—基於OpenResty的API網關設計

背景


  • 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 服務申請入口:https://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 夏日來襲

最後更新:2017-08-24 12:03:32

  上一篇:go  redis4.0之利用管道優化aofrewrite
  下一篇:go  阿裏雲前端周刊 - 第 21 期