|NO.Z.00049|——————————|BigDataEnd|——|Hadoop&Redis.V02|——|Redis.v02|数据不一致|

一、数据不一致
### --- 数据不一致

~~~     缓存和DB的数据不一致的根源 : 数据源不一样
### --- 如何解决

~~~     强一致性很难,追求最终一致性(时间)
~~~     互联网业务数据处理的特点
~~~     高吞吐量
~~~     低延迟
~~~     数据敏感性低于金融业
~~~     时序控制是否可行?
~~~     先更新数据库再更新缓存或者先更新缓存再更新数据库
~~~     本质上不是一个原子操作,所以时序控制不可行
~~~     高并发情况下会产生不一致
### --- 保证数据的最终一致性(延时双删)

~~~     先更新数据库同时删除缓存项(key),等读的时候再填充缓存
~~~     2秒后再删除一次缓存项(key)
~~~     设置缓存过期时间 Expired Time 比如 10秒 或1小时
~~~     将缓存删除失败记录到日志中,利用脚本提取失败记录再次删除(缓存失效期过长 7*24)
### --- 升级方案

~~~     通过数据库的binlog来异步淘汰key,利用工具(canal)将binlog日志采集发送到MQ中,
~~~     然后通过ACK机制确认处理删除缓存。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-04-09 13:35  yanqi_vip  阅读(24)  评论(0)    收藏  举报

导航