zoukankan      html  css  js  c++  java
  • 分布式的几件小事(七)分布式系统接口的幂等性如何保证

    1.幂等性

    所谓幂等性,就是说一个接口,多次发起同一个请求,你这个接口得保证结果是准确的,比如不能多扣款,不能多插入一条数据,不能将统计值多加了1。这就是幂等性。

    2.如何保证幂等性

    ①对于每个请求必须有一个唯一的标志,比如订单支付请求,必须要包含订单的id,一个id只能支付一次。

    ②每次处理完请求之后,必须要有一个记录标识这个请求已经处理过了,比如最常见的是在mysql中记录一个状态,比如支付前先插入一条这个订单的支付流水,而且支付流水采用唯一约束,只有插入成功才进行支付。

    ③每次接受到请求之后需要先判断之前是否已经处理过,比如一条订单已经支付了,那么就一定会有支付流水,如果存在就表示已经支付过了。

    在实际操作中,可以结合自己的业务,比如说用redis用orderId作为唯一键。只有成功插入这个支付流水,才可以执行实际的支付扣款。你就可以写一个标识到redis里面去,set order_id payed,下一次重复请求过来了,先查redis的order_id对应的value,如果是payed就说明已经支付过了,你就别重复支付了。

  • 相关阅读:
    update set from 语句用法
    SQL WITH AS用法
    SQL插入数据的多种方式
    本地临时表“#” 与 全局临时表 "##"
    sql常用语句
    关于mybatis转义SQL动态执行语句变慢的原因
    关于SQL中OUTER APPLY 得用法
    AspNetPager控件的简单使用
    JQuery常用的案例
    JQuery的学习笔记
  • 原文地址:https://www.cnblogs.com/jack1995/p/10922031.html
Copyright © 2011-2022 走看看