微服务架构 | 数据同步策略

@

§1 可选的数据同步策略

过期重读(设置有效期)
常用于缓存,设置缓存数据的有效期,到期后按其淘汰策略删除,再次使用时重写加载

优点:

  • 快速简单暴力

缺点:

  • 数据更新的时效性差,更新前后数据可能不一致
  • 设置不当可能导致击穿(热点失效)、穿透问题(批量失效),可能诱发雪崩

适应场景:

  • 更新频率低
  • 时效性要求低

延时双删
常用于缓存,删除缓存,写数据库,等待,再删除缓存
双删可以防止删缓存与写数据库之间发生读操作,导致读到脏数据

优点:

  • 一致性相对较高
  • 延时通常依赖于线程或中间件,相对复杂

缺点:

  • 时效性可能较差
  • 设置不当可能导致击穿(热点失效)、穿透问题(批量失效),可能诱发雪崩

双写
同时写入需要同步的所有数据,比如同时写数据库和缓存,但需要保证所有写入必须同时成功或失败

优点:

  • 时效性强
  • 一致性高

缺点:

  • 代码耦合度高
  • 需要额外考虑双写的任一失败的情况

场景:

  • 时效性要求高
  • 一致性要求高

异步通知/监听
写入数据后,通过mq等异步方式通知需要同步的数据侧
常见于跨服务数据同步,或binlog监听

优点:

  • 耦合度低
  • 可以同时通知多个数据侧

缺点:

  • 时效性低,从开始通知到对方消费这段时间数据不是最新的
  • 一致性不高,从开始通知到对方消费这段时间是数据不同步的

使用场景:

  • 多数据侧
  • 时效性要求不高

§2 可选的数据同步策略的选用

通常在项目实践中多种数据同步按场景不同同时使用的

  • 数据库与缓存使用过期重读延时双删
  • 不同缓存key,不同级别(本地、分布式)缓存间使用双写
  • 跨服务、跨中间件数据同步使用异步通知/监听
posted @ 2025-05-20 15:14  问仙长何方蓬莱  阅读(21)  评论(0)    收藏  举报