上次更新時間:2026 年 10 月 15 日
在電腦科學中,冪等是指某項作業的特性,即多次套用該作業的最終效果與只套用一次相同。如果對伺服器傳送相同要求五次,冪等系統會確保伺服器上的結果在第一次成功嘗試後不會變更。
除了確保結果相同,冪等作業的重要特徵是,額外呼叫不會產生副作用。這是建構高韌性分散式系統的核心要求,因為網路偶爾中斷或逾時,都可能導致用戶端多次傳送相同訊息。
在數學和電腦科學中,冪等是指某項作業的特性,即多次執行相同要求,都會產生完全相同的系統狀態與結果。
在分散式雲端架構、API 和付款處理系統中,冪等性是確保容錯能力的關鍵:它可讓用戶端和服務安全地重試失敗或逾時的網路要求,而不會造成非預期的副作用,例如重複記錄或重複收費。
在逾時或連線中斷後,安全地重試要求,不必擔心重複執行動作 (例如重複向信用卡扣款)。
使用者不必追蹤複雜的狀態,就能知道先前的要求是否成功,只要「重試直到成功」即可。
分散式系統可透過重播記錄或重新傳送遺漏的訊息,從當機中復原,且不會損毀資料。
REST 標準定義了不同類型的網路要求應如何運作。有些 HTTP 方法的設計在本質上具備「安全」或冪等的特性,這代表根據規格定義,即使多次重複執行,這些方法的行為依然可預測。有些方法會建立新資料,因此重試時必須格外謹慎,確保安全無虞。
根據 RFC 9110,有幾種標準方法本質上是冪等。重複執行這些動作,伺服器的狀態不應超出初始要求。
部分方法並非冪等,因為其主要工作是變更資料,以建立新內容或修改現有記錄的一部分。
我們建構的系統通常需要具備冪等。在某些情況下,系統會自動為我們處理。在其他情況下,開發人員需要採取行動才能實現。
最著名的例子是「重複收費」問題。如果使用者在支付機票費用時,瀏覽器停止回應,可能會再次點選「付款」。使用冪等鍵的付款 API 會確保將第二次點擊視為重試。這項功能可保護客戶的銀行帳戶,並降低處理重複交易退款的營運成本。
Terraform 和 Ansible 等工具都仰賴冪等。當您執行「建立 10 GB 儲存空間 bucket」的指令碼時,這類工具會檢查雲端目前的狀態。
現代網路 API 通常會實作 Idempotency-Key 標頭 (現為標準化網際網路工程任務組 (IETF) 草稿),讓開發人員能建構更穩固的整合。
「upsert」(新增或更新) 是經典的冪等資料庫作業。「新增或更新」並非單純的「插入」,而是「如果記錄存在,就更新;如果不存在,就建立」。