zoukankan      html  css  js  c++  java
  • API接口幂问题

    幂等这个词最初是用到数学,通俗的讲就是一个状态在一次变化和N次变化的结果是一样的,即无视次数,简单的说就是调用一次和调用N次的结果一定是一样的,这才叫幂等性。

    幂等产生的原因:

    • 网络抖动:客户端发送写请求,请求已经达到了服务端,但是服务端在返回响应信息时出现了网络问题,客户端没收到响应,于是发起了重试。
    • 重试功能:使用微服务框架,开启了重试功能。
    • 表单重复提交

    一、表单提交问题

    可以使用token机制

    二、insert接口

    可以设置唯一约束

    三、update接口

    非幂等产生问题的场景:

    • 客户端A,调服务端B的 update接口 将数据修改为:update person set name="张三"  where  id=1001;
    • 客户端B,调服务端B的 update接口 将数据修改为:update person set name="李四"  where  id=1001;
    • 客户端A,由于没有收到反馈于是发起了重试。update person set name="张三" where  id=1001;

    显然这样的结果不是我们想看见的,对于这样的问题我们可以采用乐观锁处理:

    • 客户端A,调服务端B的 update接口 将数据修改为:update person set name="张三" ,version=2  where  id=1001 and version=1;
    • 客户端B,调服务端B的 update接口 将数据修改为:update person set name="李四" ,version=3  where  id=1001 and version=2;
    • 客户端A,由于没有收到反馈于是发起了重试。update person set name="张三" ,version=2  where  id=1001 and version=1;显然这条数据不能处理成功,有效避免了数据被重复修改问题。
    古之学者为己,今之学者为人
  • 相关阅读:
    SQL Server如何使用表变量
    Msys/MinGW与Cygwin/GCC(转)
    内存段划分:代码段、数据段、堆、栈
    Codeblocks+MinGW+wxWidgets搭建方法(转)
    Java GUI图形界面开发工具
    MinGW离线安装方法汇总(转)
    Linux系统的启动过程(转)
    详解VOLATILE在C++中的作用(转)
    C++虚函数与纯虚函数用法与区别(转)
    C++中值传递、指针传递和引用传递的比较 (转)
  • 原文地址:https://www.cnblogs.com/jalja365/p/14678968.html
Copyright © 2011-2022 走看看