1) 出处:幂等性源自数学概念,表示f(x) = f(f(x));

  含义:多次执行一个函数得到的值和执行一次得到的值相同。

  :f(x) = pow(x, 1);  f(x) = abs(x);

2) 计算机中:幂等性表示执行多次所产生的影响与执行一次所产生的影响相同。

  业务场景[1]

  1. 绑定银行卡发送短信接口。

   如果APP重复点击调用后台接口,后台重复调用第三方接口,造成用户收到多条短信,一般情况下控制在60s内再重发短信,如果不做控制,每一次调用第三方接口都会收费。 

   2.创建订单接口。

   如果APP端因网络问题用户重复点击多次,会生成多个订单号,会造成系统业务问题。

3) 常用保证幂等性方法:

  1. 最多一次执行方法[2]。(加ID和查询log)
    1. 将每一个不同的业务操作赋予全局唯一ID
    2. 进行操作前,查询log,查询该ID的执行记录是否存在。
    3. 若未执行,则记录此操作的执行记录并开始执行。
    4. 若已经执行,则放弃执行此次业务操作。
    5. 若执行失败,则删除该执行记录。
    6. 若执行宕机,则一定时间后,删除该操作,并执行另一相同操作。

  2.支付的具体业务流程如下[3]

      a.获取token

      b.使用token调用支付

      c.根据token查询此次操作是否存在,如果存在则表示这次操作已经执行过,直接返回结果;如果不存在,支付扣款,保存结果

      d.给客户端返回结果

[1]https://blog.csdn.net/qq_39291929/article/details/81429275

[2]https://cloud.tencent.com/developer/article/1394087

[3] https://blog.csdn.net/yaosiyu1991/article/details/79380561

最新文章

  1. n维数组实现(可变参数表的使用)
  2. linux里的进程简介
  3. 纯Javascript实现Windows 8 Metro风格实现
  4. 【链表】BZOJ 2288: 【POJ Challenge】生日礼物
  5. App运营者必须知道的30款数据分析工具
  6. Could not fetch https://api.github.com/repos/RobinHerbots/jquery
  7. 如何使用sql语句使你的数据库减肥,下面以网狐6603数据库减肥脚本举例!
  8. iOS导航标题不居中问题(转载)
  9. MongoDB备份和恢复
  10. CLR类型设计之类型之常量和字段
  11. 关于Yuri Boykov and Vladimir Kolmogorov 于2004年提出的max flow / min cut的算法的详解
  12. 2013-9 OWASP论坛
  13. c++右值引用以及使用
  14. MySQL数据库执行计划(简单版)
  15. Android 应用的逆向和审计
  16. func_get_args函数
  17. P2885 [USACO07NOV]电话线Telephone Wire
  18. Hyper-V 与 VMware 和 vbox 的不兼容
  19. gitlab 集成Jenkins
  20. ACM-ICPC 2018 北京赛区网络预赛(9.22)

热门文章

  1. 获取header信息
  2. mysql:navcat导入导出
  3. 34. ClustrixDB 降低集群的容量-Flex down
  4. No message错误
  5. golang配置oci8所遇到问题解决
  6. K8s中RS和Deployment
  7. python播放音乐
  8. 如何使用PLX提供的官方驱动和SDK发布自己的产品?
  9. Java中indexOf的用法
  10. 基于node、webpack、搭建一个koa服务器