
在鼴鼠王國中,經營一家「全球連鎖」的漢堡店並不簡單。在上一篇文章我們討論過,當通訊隧道(網路)坍方時,經理必須在 一致性 (C) 與 可用性 (A) 之間做抉擇。但現實是:隧道有 99.99 % 的時間都是通的!那麼專門處理網路斷線的 CAP 定理 還有用嗎?
當然!當隧道正常時,優秀的鼴鼠經理知道,這就是 PACELC 定理 登場的時候。
什麼是 PACELC 定理?
我們可以把這個很難記的字串拆解成兩段邏輯:P-A-C 與 E-L-C。
小技巧:PACELC 的念法是「pass-elk」(像是「通過麋鹿」)
第一部分:P-A-C(當隧道坍方時...)
這就是上回介紹的經典 CAP 定理。當分區 (Partition) 發生,通訊中斷時,需要選擇:
- 選 A (Availability):紐約店聯繫不上台南總部,但為了不讓客人失望,店面照常營業,繼續賣漢堡!
- 選 C (Consistency):紐約店聯繫不上台南總部,為了怕帳目出錯,直接掛上「暫停營業」的告示牌。
第二部分:E-L-C(否則,當隧道正常時...)
Else (否則),當隧道暢通無阻時,經理的煩惱變成要選擇「速度」或者「品質」:
- 優先 L (Latency):追求低延遲(速度),接受短暫不一致。客人點完餐,紐約店立刻給貨,然後在背景慢慢發信通知全球分店更新庫存, 通常幾秒到幾分鐘內就會同步完成(最終一致性)。
- 優先 C (Consistency):追求強一致性(品質),接受較高延遲。客人點完餐,紐約店必須先打跨國電話即時確認全球帳本都同步好了,才敢把賣出一份漢堡給客人。
實戰演練:限量「黃金蚯蚓」的抉擇
身為一名優秀的鼴鼠經理,要如何根據不同商品調整經營陣營?
1. PA / EL 陣營:追求極致速度的「普通漢堡」
- 情境: 如果只是普通的蚯蚓漢堡,經理可以決定,只要紐約店確認賣出,不需要等台南總部回覆,就直接給客人漢堡,因為蚯蚓漢堡的庫存有很多,即使帳本有個一兩份的誤差也沒關係。這就是用「一致性風險」換取「低延遲」。
- 經營學: 隧道斷了要繼續賣 (PA),隧道正常時結帳更要快 (EL)。
- 代表: 社交媒體、線上遊戲等。這類系統追求使用者的最佳體驗,快比準重要。
2. PC / EC 陣營:守護誠信的「限量黃金蚯蚓」
- 情境: 全球限量 100 份,如果客戶已經預訂好,但最後因為庫存不足而必需取消,公司將名譽掃地。因此,經理可以決定,即使客戶的結帳時間會拉長,也要確保有足夠的庫存後,才會賣出一份「限量黃金蚯蚓」。
- 經營學: 紐約店聯繫不上台南總部,為了怕帳目出錯, 拒絕接受新訂單 (PC),但仍然可以查詢舊資料。只有等隧道修好,才恢復正常營業,但仍要慢慢確認庫存 (EC)。
- 代表: 傳統金融資料庫、秒殺購物系統等。由於本來就是限量商品,客戶買不到會感到預期中的失望,但「買到卻被取消訂單」會非常憤怒!
全球系統大多是 PA / EL ?
你可能會問:「為什麼 Facebook 或 Google 之類的跨國服務,用起來都像是 PA / EL?」 答案是:物理限制。
當你的漢堡分店開在美國與台灣,光速傳輸雖然快但也是有極限的。例如,一次跨太平洋的 RTT(Round Trip Time)大約在 150ms-200ms,因此若選擇 EC,表示每一次資料更新都要等待這段物理延遲。如果為了追求 EC (正常時保一致),台灣人按個讚都要等美國伺服器回傳確認,就為了等按讚數 + 1,那每個人都會滑臉書滑到想摔手機。
因此,全球規模的系統通常實踐 「最終一致性」:
「現在先讓在台灣的你(L/速度)即時地換好大頭貼,雖然美國的朋友現在(E/正常時)還沒看到,但放心,幾秒鐘後他們就會看到最新的照片(最終一致性)!」
結語
當下一次在搶票、訂飯店、或者只是漫無目的地刷Threads,看到畫面上出現轉圈圈時,我們可以思考:畫面背後的這位鼴鼠經理,他的經營策略是什麼?他要的是快?還是準?他為什麼這樣選?


















