美文网首页java架构设计专题
谈谈服务的幂等设计

谈谈服务的幂等设计

作者: 先生zeng | 来源:发表于2019-09-24 20:37 被阅读0次

    概念

    一般来说,幂等设计有两个层次上的理解。

    1. 请求层面

    保证请求重复执行和执行依次的结果一致。数学上表示:

    f...f(f(x)) = f(x)
    x为参数
    f为执行函数/方法

    1. 业务层面
    • 同一用户不重复下单
    • 商品不超买
    • MQ消费端去重

    目的

    1. 请求重试

      比如银行的幂等案例。

    2. 结果灾难性

      • 转账
      • 交易

    幂等的范围

    • 读写请求层面
      请求对数据发生改变,需要做幂等。 写请求会。读请求不会
    • 架构层面
    image

    只有数据访问层会。

    例如:

    image

    1.插入数据或创建时,一般有自增id,不会导致重复插入,但是如果有业务id时,会有多次插入。

    2.读的时候,基本不会有

    3.更新时,如上图,如果是第一种更新,不会有问题,如果是第二种,会导致出错。

    4.删除时,同理

    • 业务层面幂等
    1. 冗余部署多个进程

      存在并发消费的可能性

      并发转变为串行消费

    本质

    分布式锁问题

    待续

    相关文章

      网友评论

        本文标题:谈谈服务的幂等设计

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