java进阶篇--如何保证接口的幂等性?常见的实现方案有哪些?

幂等性问题是面试中常见的面试问题,也是分布式系统最常遇到的问题之一。在说幂等性之前,我们先来看一种情况,假如老王在某电商平台进行购物,付款的时候不小心手抖了一下,连续点击了两次支付,但此时服务器没做任何验证,于是老王账户里面的钱被扣了两次,这显然对当事人造成了一定的经济损失,并且还会让用户丧失对平台的信任。而幂等性问题说的就是如何防止接口的重复无效请求。

我们本课时的面试题是,什么是幂等性?如何保证接口的幂等性?

回答:

幂等性最早是数学里面的一个概念,后来被用于计算机领域,用于表示任意多次请求均与一次请求执行的结果相同,也就是说对于一个接口而言,无论调用了多少次,最终得到的结果都是一样的。比如以下代码:
public class IdempotentExample {
    // 变量
    private static int count = 0;
    /**
     * 非幂等性方法
     */
    public static void addCount() {
        count++;
    }
    /**
     * 幂等性方法
     */
    public static void printCount() {
        System.out.println(count);
    }
}

对于变量 count 来说,如果重复调用 addCount() 方法的话,会一直累加 count 的值,因为 addCount() 方法就是非幂等性方法&

你可能感兴趣的:(Java源码剖析(30讲),幂等性,接口幂等性)