2023-09-15
原文作者:王伟王胖胖 原文地址: https://blog.csdn.net/wangwei19871103/article/details/105623059

大致流程图

202309152311504931.png

读缓存与读写缓存同步

ResponseCacheImpl初始化的时候会开启一个定时任务,更新读缓存,默认每30秒一次:

202309152311514492.png
可以看到他会遍历所有读缓存,然后和读写缓存做对比,不同的话就把读写缓存的数据覆盖到读缓存中。这样就做了同步,以读写缓存为准。

202309152311520533.png

读写缓存与注册表同步

注册表里的数据是最中数据啊,那读写缓存又怎么和注册表同步呢,其实就是在前面很多操作中的invalidate失效缓存里,把相关缓存个失效了,于是发现缓存没有了,就会从注册表中获取,也就是同步啦:

202309152311527904.png

202309152311534935.png
还有一个地方,是缓存失效的地方,就是在刚创建读写缓存的时候,这里设置了写后多少时间失效,默认是180秒后,同样失效了也是从注册表中获取,也是同步了:

202309152311542076.png
失效默认事件:

202309152311549587.png

好了,处理服务获取基本讲完了,增量获取也类似,自己看下吧。主要这里有个读写分离的思想,为了提高效率,如果只有一级读写缓存的话,那么读写是互斥的,效率就低了,所以这里用空间换时间,又加了一层读缓存,为了高可用,高性能,只能追求最终一致性啦。

集群结点同步

最后再补点这个,具体自己可以去看,我就画个图吧,很多操作成功的时候都会去同步结点的:

202309152311554668.png

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。

阅读全文