設計相同輸入的 Azure 函數

事件驅動和以訊息為基礎的架構可偵測接受相同要求的需求,同時維持資料完整性和系統穩定性。

為了方便說明,請設想電梯呼叫按鈕。 當您按下按鈕時,按鈕會亮起,且電梯會移動到您所在的樓層。 不久後,其他人也在大廳加入等電梯的行列。 這個人對您微笑,對著已經亮起的按鈕按下第二次。 您回以微笑,並在心裡竊笑,因為您想起呼叫電梯的命令具有冪等性。

第二、三或四次按下電梯呼叫按鈕對最後結果沒有影響。 當您按下按鈕,無論按了多少次,電梯都會移動到您所在的樓層。 在電梯這種冪等系統中,無論發出相同的命令多少次,都會得到相同結果。

關於建立應用程式,請設想以下情境:

  • 如果您的存貨控制項應用程式多次嘗試刪除相同產品,會發生什麼事?
  • 如果有多筆為相同人員建立員工記錄的要求,您的人力資源應用程式會如何反應?
  • 如果您的銀行應用程式收到相同提款的 100 筆要求,這筆錢的流向為何?

在許多情況下,針對函數的要求會收到相同的命令。 部分情況包括:

  • 重試原則多次傳送相同的要求。
  • 快取命令重新執行至應用程式。
  • 應用程式錯誤傳送多個相同的要求。

為了保護資料完整性和系統健全狀況,冪等應用程式會包含可能包括以下行為的邏輯:

  • 先驗證資料是否存在,再嘗試執行刪除動作。
  • 先驗證資料是否存在,再嘗試執行建立動作。
  • 協調邏輯,以建立最終的資料一致性。
  • 並行控制。
  • 重複偵測。
  • 資料有效期限驗證。
  • 保護邏輯以驗證輸入資料。

透過確保指定的動作可以達成,並只能執行一次,即可達成最終冪等性。

下一步