标签:一致性 响应 需要 性问题 清除缓存 img 异步线程 强一致 图片
通常来说,在我们的系统中会把数据永久保存在DB中,并且冗余一份数据在缓存中。读请求优先从缓存读取数据,没有再从DB读取,如下图:
这样做的好处是可以减小DB的压力,提高请求的响应速度。
但这种架构在提升系统读请求处理能力的同时,给系统写请求的处理带来了不少的麻烦。因为数据在DB跟缓存中各自保存了一份,如何保证它们之间的数据一致就是需要注意的问题了。
当处理写请求时有两种方式:
问题本质上就是一个分布式数据一致性问题,在不要求强一致性的场景下,我们只要开辟一个异步任务去保证最终一致性即可。
就上面所说的场景来说,发生失败时,我们可以开启一个异步线程去做数据回填操作,反复重试直到成功。如果采用异步线程回填数据的方式做最终一致性,那么这个容错性是内存级别的,也就是说如果此时重启服务(线程消失),那么这个重试任务就丢失了,导致数据不一致。
标签:一致性 响应 需要 性问题 清除缓存 img 异步线程 强一致 图片
原文地址:https://www.cnblogs.com/chengege/p/11073912.html