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

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

運算層請求路由

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

運算層請求路由

先鋒集團使用稱為全球協調和狀態工具(GoAST)的系統和一個名為全球多區域庫(GMRLib)的庫進行此路由過程,如 Re:Invent 2022 中所述。它們使用 follow-the-sun 單一主要模型。GoAST 會維持全域狀態,類似於上一節中討論的 Route 53 ARC 路由控制項。它使用全域資料表來追蹤哪個區域是主要區域,以及排定下一個主要交換器的時間。所有的讀取和寫入操作都經過 GMRLib,它與 GoAST 協調。GMRLib 允許在本地以低延遲執行讀取操作。對於寫操作,GMRLib 檢查本地區域是否是當前的主要區域。如果是,則寫入操作會直接完成。如果沒有,GMRLib 會將寫入任務轉送到主要區域中的 GMRLib。接收程式庫會確認它也會將自己視為主要區域,如果不是,則會引發錯誤,表示全域狀態的傳播延遲。此方法不直接寫入遠端 DynamoDB 端點,進而提供驗證優勢。