本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Kinesis Data Streams 中的恢復能力
AWS 全域基礎設施是以 AWS 區域和可用區域為基礎建置。 AWS 區域提供多個實體隔離和隔離的可用區域,這些區域與低延遲、高輸送量和高度備援的網路連接。透過可用區域,您所設計與操作的應用程式和資料庫,就能夠在可用區域之間自動容錯移轉,而不會發生中斷。可用區域的可用性、容錯能力和擴充能力,均較單一或多個資料中心的傳統基礎設施還高。
如需 AWS 區域和可用區域的詳細資訊,請參閱AWS 全域基礎設施。
除了 AWS 全球基礎設施之外,Kinesis Data Streams 還提供數種功能,以協助支援您的資料彈性和備份需求。
Amazon Kinesis Data Streams 中的災難復原
當您使用 Amazon Kinesis Data Streams 應用程式處理來自串流的資料時,以下層面可能發生失敗:
-
記錄處理器失敗
-
工作者失敗,或是執行個體化工作者的應用程式執行個體失敗
-
託管應用程式一或多個執行個體的EC2執行個體可能會失敗
記錄處理器失敗
工作者使用 Java ExecutorService
工作者或應用程式失敗
如果工作者 (或 Amazon Kinesis Data Streams 的執行個體) 發生失敗,您即應偵測並處理該情況。例如,若 Worker.run
方法擲回例外狀況,您應將其截獲並加以處理。
如果應用程式本身發生失敗,您應對其進行偵測並予重新啟動。應用程式啟動時會執行個體化新的工作者,再由後者執行個體化新的記錄處理器,系統將自動指派碎片供其處理。這些碎片可能是該等記錄處理器在發生失敗前處理過的同一批碎片,或是另行指派給該等記錄處理器的新碎片。
在工作者或應用程式失敗的情況下,不會偵測到失敗,而且在其他執行個體上執行應用程式的其他EC2執行個體中,這些其他執行個體上的工作者會處理失敗。它們會建立其他記錄處理器,來處理失敗的工作者不再處理的碎片。這些其他EC2執行個體的負載會隨之增加。
此處所述的案例假設,雖然工作者或應用程式失敗,託管EC2執行個體仍在執行中,因此不會由 Auto Scaling 群組重新啟動。
Amazon EC2執行個體失敗
建議您在 Auto Scaling 群組中執行應用程式的EC2執行個體。如此一來,如果其中一個EC2執行個體失敗,Auto Scaling 群組會自動啟動新的執行個體來取代它。您應該將執行個體設定為在啟動時同時啟動 Amazon Kinesis Data Streams 應用程式。