0
点赞
收藏
分享

微信扫一扫

4-2 消息幂等性

兽怪海北 2021-09-25 阅读 36

幂等性是什么?

  1. 用户对于同一操作发起的一次或者多次请求,最后的结果都是相同的,这就是幂等性
  2. 在MQ中就是保障消息不要被重复消费。

业界主流的幂等性操作

乐观锁方案

借鉴数据库的乐观锁机制,如:

根据version版本,也就是在操作库存前先获取当前商品的version版本号,然后操作的时候带上此version号。我们梳理下,我们第一次操作库存时,得到version为1,调用库存服务version变成了2;但返回给订单服务出现了问题,订单服务又一次发起调用库存服务,当订单服务传如的version还是1,再执行上面的sql语句时,就不会执行;因为version已经变为2了,where条件就不成立。这样就保证了不管调用几次,只会真正的处理一次。

Redis原子操作

利用redis的原子操作,做个操作完成的标记。这个性能就比较好。但会遇到一些问题。

第一:我们是否需要把业务结果进行数据落库,如果落库,关键解决的问题时数据库和redis操作如何做到原子性?

第二:如果不进行落库,那么都存储到缓存中,如何设置定时同步策略?

举报

相关推荐

0 条评论