雙層nginx解決緩存命中率低的問題

概述

一般情況下會部署多個nginx,在裏面都會放一些緩存,但是命中率比較低。因此,會採用分發層與應用層的雙層nginx架構方案。

緩存命中率低下原因

緩存命中率低的原因

 

上圖已經很清楚的描述了nginx 緩存命中率低下的原因,爲了解決這個問題,採用相同的id 路由到相同的nginx 服務器中就可以了。

雙層nginx 架構方案

雙層nginx 架構

 

上圖描述了雙層nginx 架構:分發層與應用層。
最前端的nginx服務器,被稱之爲分發服務器;後端的nginx服務器,就稱之爲應用服務器。

  • 分發層 nginx服務器
    負責流量分發的邏輯和策略,這個裏面它可以根據你自己定義的一些規則, 比如根據Id去進行 hash,然後對後端的 nginx 數量取模,將某一個請求的訪問, 固定路由到一個 nginx 後端服務器上去。
  • 應用層 nginx 服務器
    負責數據緩存。通過上面的路由保證只會從 redis 中獲取一次緩存數據, 這樣後面全都是走 nginx 本地緩存了。

結論

在實際的生產環境中,可以大幅度提升nginx本地緩存命中率,減少redis後端的壓力,大量提升服務性能。