運算層請求路由 - AWS 規範指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

運算層請求路由

使用運算層請求路由時,在運算層中執行的程式碼會決定是否在本機處理請求,或將其傳遞至在另一個區域中執行的自身副本。當您使用寫入至一個區域模式時,運算層可能會偵測到它不是作用中區域,並允許本機讀取操作,同時將所有寫入操作轉送至另一個區域。此運算層程式碼必須了解資料拓撲和路由規則,並根據指定哪些資料處於作用中狀態的最新設定可靠地強制執行它們。區域內的外部軟體堆疊不需要知道微服務如何路由讀取和寫入請求。在穩健的設計中,接收區域會驗證其是否為寫入操作的目前主要項目。如果不是,則會產生錯誤,指出需要全域狀態需要修改。如果主要區域正在變更,則接收區域也可能會緩衝寫入操作一段時間。在所有情況下,區域中的運算堆疊只會寫入其本機 DynamoDB 端點,但運算堆疊可能會彼此通訊。

運算層請求路由

Vanguard 群組會針對此路由程序使用名為 Global Orchestration and Status Tool (GOaST) 的系統,以及名為 Global Multi-Region Library (GMRlib) 的程式庫,如 re:Invent 2022 所示。他們使用follow-the-sun主要模型。GOaST 會維護全域狀態,類似於上一節討論的 ARC 路由控制。它使用全域資料表來追蹤哪個區域是主要區域,以及排程下一個主要交換器的時間。所有讀取和寫入操作都會經過 GMRlib,其會與 GOaST 協調。GMRlib 允許在本機以低延遲執行讀取操作。對於寫入操作,GMRlib 會檢查本機區域是否為目前的主要區域。如果是,則寫入操作會直接完成。如果沒有,GMRlib 會將寫入任務轉送至主要區域中的 GMRlib。接收程式庫會確認它也會將自己視為主要區域,如果不是,則會引發錯誤,表示全域狀態的傳播延遲。此方法不直接寫入遠端 DynamoDB 端點,進而提供驗證優勢。