双层nginx解决缓存命中率低的问题

概述

一般情况下会部署多个nginx,在里面都会放一些缓存,但是命中率比较低。因此,会采用分发层与应用层的双层nginx架构方案。

缓存命中率低下原因

缓存命中率低的原因

 

上图已经很清楚的描述了nginx 缓存命中率低下的原因,为了解决这个问题,采用相同的id 路由到相同的nginx 服务器中就可以了。

双层nginx 架构方案

双层nginx 架构

 

上图描述了双层nginx 架构:分发层与应用层。
最前端的nginx服务器,被称之为分发服务器;后端的nginx服务器,就称之为应用服务器。

  • 分发层 nginx服务器
    负责流量分发的逻辑和策略,这个里面它可以根据你自己定义的一些规则, 比如根据Id去进行 hash,然后对后端的 nginx 数量取模,将某一个请求的访问, 固定路由到一个 nginx 后端服务器上去。
  • 应用层 nginx 服务器
    负责数据缓存。通过上面的路由保证只会从 redis 中获取一次缓存数据, 这样后面全都是走 nginx 本地缓存了。

结论

在实际的生产环境中,可以大幅度提升nginx本地缓存命中率,减少redis后端的压力,大量提升服务性能。