假设你的系统时分布式的,部署的节点假设为A、B
如果此时A中的数据被用户修改了、那么当用户去B节点获取数据时肯定是无法获取的,针对该问题可以借助第三方缓存中间件
完成,A和B都从第三方中间件缓存中获取即可
上面的缓存中间件主流的一般为Redis、MemoryCache等,虽然能够解决了分布式缓存的问题,但需要用户增加维护缓存的成本
上诉的架构虽然能够解决分布式缓存的问题、但是会导致缓存中间件频繁连接,为此我们基础框架内置的缓存使用了另一种方式解决
[!TIP|label: 流程分析]
- A节点、B节点同时订阅一个频道(假设为ChannelDemo)
- A节点将数据放入到基础框架缓存中(假设为adminCache)
- adminCache将缓存数据放置在该节点对应的实例中一份(方便A节点获取),并将消息M发布给ChannelDemo管道
- 由于B节点订阅了ChannelDemo,所以B节点收到消息M,B节点自动拉取M消息到该节点对应的实例中一份(方便B节点获取)
- 如果用户此时被路由到B节点上,那么是可以获取A节点上存放的数据的
[!TIP|label: 结论]
通过上面流程分析可以看出,当缓存数据修改不频繁时,可以提高缓存命中率