缓存与数据库数据一致性的问题

缓存与数据库数据一致性的问题

老师,请问一下。对于非强一致性的数据,例如商品名称、参数等,可以采用redis + canal来更新缓存数据;对于强一致性数据怎么更新,例如商品价格?对于订单数据是否可以直接保存到es上进行查询哈?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

分布式系统不可能使用强一致性的,如果使用必定牺牲可用性或者容错性,这两点都比强一致性来的重要。
订单数据选择es redis mongodb 等都可以,以一个为主都行的,看系统怎么设计都没毛病。

  • 慕圣7142753 提问者 #1
    如果数据库修改了商品的价格信息,若异步更新商品价格失败,这样不就造成商品显示价格与实际支付价格不一致的问题吗?
    2020-08-28 09:36:00
  • 风间影月 回复 提问者 慕圣7142753 #2
    更新不成功会有异常。而且这本来就可能会有双写一致的问题,如果使用这种方式,在超高并发下就必定可能出现不一致的问题。一般用canal。分布式下是不可能使用强制性的,和并发流畅有悖
    2020-08-28 09:40:32
  • 慕圣7142753 提问者 回复 风间影月 #3
    好的,谢谢老师了。一般保证的是最终一致性与弱一致性。
    2020-08-28 10:01:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师