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() 方法就是非冪等性方法;而 printCount() 方法只是用來打印控制檯信息的。因此,它無論調用多少次結果都是一樣的,所以它是冪等性方法。

知道了冪等性的概念,那如何保證冪等性呢?

冪等性的實現方案通常分爲以下幾類:

    前端攔截

    使用數據庫實現冪等性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章