架構之微服務設計(Nginx + Upsync)


Upsync,微博開源基於Nginx容器動態流量管理方案 。

Nginx 以其超高的性能與穩定性,在業界獲得了廣泛的使用,微博的七層就大量使用了 Nginx 。結合 Nginx 的健康檢查模塊,以及動態 reload 機制,可以近乎無損的服務的升級上線與擴容。這個時候擴容的頻次比較低,大多數情況下是有計划的擴容。

Upsync,開發了模塊 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,並更新 Nginx 的路由信息。此模塊不依賴於任何第三方模塊。 consul 作為 Nginx 的 db,利用 consul 的 KV 服務,每個 Nginx work 進程獨立的去拉取各個 upstream 的配置,並更新各自的路由。

流程圖如下:

應用案例:

模塊已經應用在微博的各類業務中,下面圖表對比分析使用模塊前后的 QPS 與耗時變化。

從數據可以得出,reload 操作時造成 nginx 的請求處理能力下降約 10%,Nginx 本身的耗時會增長 50%+。若是頻繁的擴容縮容,reload 操作造成的開銷會更加明顯。

 

點擊鏈接加入群【.NET大型網站架構】433685124QQ群


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM