后端存储实践一

作者: 逗逼程序员 | 来源:发表于2020-07-28 20:10 被阅读0次

    该系列课程都是以电商的的场景为例子,来讲解后端存储的一些实例。

    因为网络、服务器等原因,重试成了我们必不可少的一种手段,这时就需要你提供的服务是幂等的。具有幂等的服务就可以完美克服重试导致的数据错误。

    1、订单的存储如何实现幂等?

    这不是前端应该做的嘛?幼稚了,哈哈哈,我们通常使用的 rpc 或者网关都有重试的功能,如果这种请求打到后端,还是会生成重复订单。

    那要怎么认定重复订单呢?同一个用户信息?不可能啊,同一个用户可以下多次订单怎么办?

    主键 id ?这个是每次插入生成的。

    通常做法是这样的,创建订单的时候,前端页面先生成一个订单号,这样如果重复提交同一个订单号在后端数据库只能有一条记录,可以利用数据库的这个特性,实现记录的幂等性。

    具体实现种有个需要注意的点:如果是因为重复创建导致的错误不要抛给前端,返回订单创建成功好了。

    2、如何完美解决 ABA 的问题

    先来陈述下这个问题:大概产生流程就是 记录从原始状态更新为 A ,

    但是这个response 并没有成功触达调用方。导致调用方的重试,但是

    这期间另一个请求已经将状态修改为了 B , 再次发起的 A更新操作当然会将

    记录的状态更新为A 了。那么如何避免这个问题呢?

    想必,你想到了,就是类似乐观锁的的操作,每次更新操作带上 version 字段,这就当然需要你数据库增加一列 version , 返回给调用方的查询结果也是带上 version ,这样更新操作就会带上这个字段执行更新操作。如果版本不对,就更新失败。

    相关文章

      网友评论

        本文标题:后端存储实践一

        本文链接:https://www.haomeiwen.com/subject/fwyqrktx.html