Upsync動態(tài)流量管理方案
Upsync,微博開源基于Nginx容器動態(tài)流量管理方案 。
Nginx 以其超高的性能與穩(wěn)定性,在業(yè)界獲得了廣泛的使用,微博的七層就大量使用了 Nginx 。結(jié)合 Nginx 的健康檢查模塊,以及動態(tài) reload 機制,可以近乎無損的服務(wù)的升級上線與擴容。這個時候擴容的頻次比較低,大多數(shù)情況下是有計劃的擴容。
Upsync,開發(fā)了模塊 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,并更新 Nginx 的路由信息。此模塊不依賴于任何第三方模塊。consul 作為 Nginx 的 db,利用 consul 的 KV 服務(wù),每個 Nginx work 進程獨立的去拉取各個 upstream 的配置,并更新各自的路由。
流程圖如下:
應(yīng)用案例:
模塊已經(jīng)應(yīng)用在微博的各類業(yè)務(wù)中,下面圖表對比分析使用模塊前后的 QPS 與耗時變化。
從數(shù)據(jù)可以得出,reload 操作時造成 nginx 的請求處理能力下降約 10%,Nginx 本身的耗時會增長 50%+。若是頻繁的擴容縮容,reload 操作造成的開銷會更加明顯。
官方商業(yè)版對 Nginx plus 支持了 DNS 與 push 版本提供了支持。
在使用過程中因為數(shù)據(jù)一致性等問題,擴展支持了基于 consul 的 pull 版本。
評論
圖片
表情
