策码奔腾

保证缓存一致性的解决方案

根据业务需求可分为强一致性和最终一致性两种解决方案。

1.强一致性方案

  当业务对数据一致性要求较高时,使用该方案。

  一般通过降低性能的方式,对读写请求顺序做到可控,以保证在写操作在同步缓存的过程中不产生读操作。

  这样在读操作时,读取到的缓存数据一定是数据库中相同的数据。

 

2.最终一致性

  当业务要求只需保证数据的最终一致性,但对可用性要求较高时,使用该方案。

  一般通过先修改数据库,再以非即时的方式修改缓存来保证数据的最终一致性。

  根据修改缓存方式的不同,有如下方法。

  2.1 删除缓存并设置缓存过期时间

    在修改数据库成功后,删除原本的缓存数据。这时在读操作未命中缓存数据时,从数据库中更新最新数据。

    但是当删除缓存失败或数据库提交不及时时,依然存在数据不一致的意外情况,因此需要给缓存设置过期时间,当意外情况发生时,等待缓存过期后更新缓存数据。

  2.2 异步更新缓存

    把修改缓存的操作独立出来,通过监听数据库更新的方式(例如订阅binlog日志)异步修改缓存数据。

    当更新失败时使用重试机制保证更新成功。

 

当业务同时对一致性和可用性有较高要求时,根据分布式系统的CAP理论,只有放弃分区容错性来满足要求了。

posted @ 2022-08-08 10:53  策码奔腾  阅读(750)  评论(0编辑  收藏  举报
console.log('欢迎');