揭秘ZSearch2.0—基於OpenResty的API網關設計
背景
- OpenResty 是一個支持lua的nginx,並且內置了一些常用的lua庫。利用lua,我們就可以便捷得擴展nginx能力,甚至可以直接作為Web服務對外提供。 主頁鏈接
- 由下圖可以看出,我們可以在各個階段進行幹預。
設計
實現關鍵
- 這套方案實現並不複雜,主要是對nginx的幹預要可控,對nginx主要的幹預點有三個。
- init_worker_by_lua_file 注冊路由信息
- access_by_lua_file 進行dispatch,過濾改寫,權限校驗和代理請求。如果代理請求的話,要記得
ngx.exit
將請求結束。 - 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