上篇文章整个三级缓存的架构已经走通了;
但是遇到一个问题,如果缓存服务在本地的ehcache中都读取不到数据,就意味着,需要重新到源头的服务数据库中去拉去数据,拉取到数据之后,先给nginx
的请求返回,同时将数据写入ehcache
和redis
中。在多个服务下,就会有重建缓存的并发冲突
问题!
分布式重建缓存并发冲突
问题由来
重建缓存
:数据在所有的缓存中都不存在了(比如LRU
算法清楚),就需要重新查询数据写入缓存,重建缓存分布式的重建缓存
,在不同的机器上,不同的服务实例中,去做上面的重建缓存,就会出现多个机器分布式重建去读取相同的数据,然后写入缓存中。
分布式重建缓存的并发冲突问题…
解决方案
采用的方案和分发层nginx分流到应用层nginx原理一样。
- 之前已经实现流量均匀分布到所有缓存服务实例上