本文首发于Ressmix个人站点:https://www.tpvlog.com
经过前面几章的讲解,我已经通过代码实现了三级缓存架构中的JVM本地缓存和Redis分布式缓存。本章,我将讲解最后的一层——Nginx缓存,我将使用OpenResty这个基于Nginx的开源框架,来实现请求分发和Nginx缓存。
一、基本架构
我先来讲解下整个Nginx集群的架构和部署,我会把Nginx集群分为两层:流量分发层和应用层。
流量分发层:用于根据请求的参数,计算路由信息(比如对商品ID哈希,计算路由信息),然后将请求分发到应用层;
应用层:用于实现多级缓存架构中的Nginx缓存,应用层包含了缓存的存取控制逻辑,同时会调用下游的真正应用服务。
我们来思考下,为什么要分这两层,而不是直接部署一个Nginx集群,采用Round-Robin之类的算法均匀分发请求至后端服务?
其实,主要的目的就是提升Niginx缓存命中率。如果只有一层Nginx集群,那么请求一般会均匀的分发到各个Nginx上,对于商品请求来说,同一个商品ID的多次不同请求,很可能第一次命中到A这台Nginx服务器ÿ