Azure Stream Analytics 是一項高度韌性的服務,能同時處理並分析來自多個來源的串流資料。 Stream Analytics 提供資訊,使你能建立複雜的事件處理管線,並結合類似 SQL 的查詢。
當您使用 Azure 時, 可靠性是共同的責任。 Microsoft 提供一系列功能來支援韌性和復原。 您有責任瞭解這些功能在您使用的所有服務中如何運作,並選取符合業務目標和正常運作時間目標所需的功能。
本文說明 Stream Analytics 如何具備韌性,應對潛在問題,包括暫時性故障與可用性區域中斷。 我們也提供如何保護關鍵任務免於區域故障及服務維護的指導,並強調關於串流分析服務水準協議(SLA)的一些重要資訊。
這很重要
如果其他元件不夠有韌性,單靠提升串流分析的韌性可能效果有限。 考慮你的資料來源,包括輸入與輸出的可靠性。 根據您的復原需求,您可能需要跨多個區域進行組態變更。
生產部署建議
為了確保在生產環境中使用 Stream Analytics 的高度可靠性,我們建議您:
- 使用有可用區域的區域: 在支援可用區域的區域部署串流工作和其他資源。
- 部署足夠容量: 根據預期吞吐量設定串流設備,準備額外的容量以應付尖峰負載,並在基準需求上留有緩衝區以備突然增加。
- 監控健康狀況: 利用 Azure Monitor 指標與診斷日誌實施全面監控,追蹤工作健康狀況、輸入/輸出事件及資源利用情況。 針對浮水印延遲和執行時錯誤等關鍵指標設定警示,以便在問題影響資料處理前發現。 欲了解更多資訊,請參閱 Monitor Azure Stream Analytics。
- 對關鍵任務負載實施多區域冗餘: 在多個區域部署相同的串流分析工作,並同步配置並適當路由,以達成區域韌性。 雖然 Stream Analytics 不提供原生多區域複製,但此方法實現故障轉移與連續性。 如需詳細資訊,請參閱 用於復原的自訂多區域解決方案。
可靠性架構概觀
本節說明服務運作中從可靠性角度來看最為重要的部分。 本節介紹邏輯架構,包含你部署和使用的部分資源與功能。 它還討論了物理架構,其中提供了有關服務如何在幕後工作的詳細信息。
邏輯架構
工作是串流分析中最基本的單元,讓你能定義並執行你的串流處理邏輯。 一份工作包含以下主要組成部分:
- 從資料來源讀取串流資料的輸入,例如 Azure 事件中樞、Azure IoT 中樞或 Azure 儲存體。
- 一個處理並轉換資料的 查詢 。
- 這些輸出會持續將結果寫入各種目的地,例如 Azure SQL 資料庫、Azure Data Lake Storage、Azure Cosmos DB、Power BI 等。
欲了解更多關於串流分析職缺及資源模型的資訊,請參閱 Azure 串流分析資源模型。
實體架構
串流分析透過多層韌性來緩解基礎架構及輸入輸出資料來源的問題,從而達成高度可靠性。 以下組成部分有助於確保您的工作運作穩健:
工作者節點。 在叢集中運行的虛擬機上運行流分析作業,這些虛擬機稱為工作節點。 當你使用 Standard 或 StandardV2 SKU 時,你的工作會在共享叢集上執行。 當你使用 Dedicated SKU 時,你的工作會跑在獨立的專用叢集上。
因為平台會自動管理工作節點的建立、跨工作節點的配置、健康監控,以及不良工作節點的替換,所以你不會直接看到或管理這些虛擬機。
串流單元。 平台管理工作節點及工作節點間的任務分配,而你則負責分配 串流處理單元(SUs) 給工作。 SU 代表執行作業的運算資源。 SU 數量越多,分配給該工作的運算資源就越多。 欲了解更多資訊,請參閱 「了解並調整串流分析串流單元」。
檢查站。 Stream Analytics 透過定期 檢查狀態 來維護工作狀態。 檢查點可在發生失敗時以最少的資料重新處理快速復原,即使是使用具狀態查詢邏輯的工作也能適用。
當處理失敗發生時,串流分析會自動從最後檢查點重新啟動,並自動重新處理處理過程中失敗的事件。 此保證適用於工作中所有內建函式及使用者自訂函式。 然而,要達成端到端的精確一次配送,則取決於輸出目的地的能力。 欲了解更多資訊,請參閱 Azure Stream Analytics 職缺中的檢查點與重播概念。
備註
透過 IoT Edge 上的 Azure Stream Analytics ,你可以在自己的基礎架構上執行工作。 當你在物聯網邊緣使用串流分析時,你必須負責配置它以符合你的可靠性需求。 物聯網邊緣上的串流分析不在本文章的討論範圍內。
對瞬態故障的抵抗力
暫時性錯誤是元件中的短暫間歇性失敗。 它們經常出現在雲端等分散式環境中,而且是作業的一般部分。 暫時性錯誤會在短時間內自行修正。 請務必確保您的應用程式能妥善處理暫時性錯誤,通常透過重試受影響的請求來進行。
所有雲端裝載的應用程式在與任何雲端裝載的 API、資料庫和其他元件通訊時,都應該遵循 Azure 暫時性錯誤處理指引。 如需詳細資訊,請參閱 處理暫時性錯誤的建議。
串流分析透過內建重試機制自動處理許多暫態錯誤,無論是從輸入處擷取資料,還是將資料寫入輸出。 在工作者節點重新啟動或作業重新指派後,作業會使用檢查點重新播放任何尚未完全處理的事件,並持續處理直到達到目前的輸入串流。
設定 輸出錯誤政策是個好習慣。 然而,這些政策僅適用於資料轉換錯誤,且不影響處理暫時性故障的行為。
對可用性區域故障的抵抗力
可用性區域 是 Azure 區域內物理上獨立的資料中心群組。 當某個區域發生故障時,服務可以切換至其他剩餘的區域。
在支援可用性區域的區域中,串流分析會自動採用區域備援,這表示工作會使用多個可用性區域。 區域冗餘確保你的工作能抵禦大量故障,包括災難性的資料中心故障,且不需更改應用程式邏輯。
當你在區域啟用區域建立 Stream Analytics 工作時,該服務會將你的工作計算資源分配到多個可用區域:
這種區域冗餘部署模式確保即使整個可用區域無法使用,串流工作仍能持續處理資料。 例如,以下圖示顯示若區域 3 發生故障,工作如何繼續執行:
區域冗餘適用於所有串流分析功能,包括查詢處理、檢查點及工作管理操作。 Stream Analytics 會自動在不同可用性區域複製您工作的狀態與檢查點資料,防止資料遺失,並在區域故障時幾乎無停機時間。
需求
- 區域支援: 在任何支援可用性區域的區域都支援串流分析資源的區域冗餘。 關於支援可用性區域的完整列表,請參見具有可用性區域的 Azure 區域。
- SKUs: 區域冗餘在所有 Stream Analytics SKU 中皆可使用。
費用
Stream Analytics 的區域冗餘不會產生額外費用。 不管你的工作是否以區域冗餘配置運行,串流單位的費用都是一樣的。 詳情請參閱 Azure Stream Analytics 的定價。
設定可用性區域支援
建立區域備援的串流分析工作。 當你在支援區域建立串流分析工作時,區域冗餘會自動啟用。 不需要組態。
關於部署說明,請參閱 快速啟動:透過 Azure 入口建立串流分析工作 及 快速啟動:使用 Azure 入口建立專用的 Azure 串流分析叢集。
啟用區域備援。 在具有可用性區域的區域中,所有工作與專用叢集都會自動採用區域備援。 您不需要啟用區域備援。
停用區域備援。 無法停用「區域冗餘」。
所有區域都狀況良好時的行為
本節說明當您設定支援可用性區域的 Stream Analytics 工作,且所有可用性區域均正常運作時,應該預期會發生的情況。
區域之間的流量路由。 Stream Analytics 會把每個工作都放在工作節點上執行。 任何區域的工作人員都可能處理進來的串流資料。 該服務利用內部負載平衡來將處理任務分散到不同區域。
區域之間的資料複寫。 Stream Analytics 能同步複製作業狀態與檢查點資料,跨越可用區域。 當工作處理事件並更新狀態時,Stream Analytics 會先將這些變更寫入多個可用區域,然後才確認。 這種同步複製確保即使整個區域無法使用,也不會有資料遺失。 複製過程對你的應用程式是透明的,且在正常情況下不會影響處理延遲。
區域失敗期間的行為
當您設定支援可用性區域的 Stream Analytics 工作且發生可用性區域中斷時,本節將說明您可以預期的情況。
- 偵測與回應:串流分析平台負責偵測可用性區域的故障並迅速回應。 Stream Analytics 會將故障區域的工作者標記為不健康,而在這些工作者上執行的任務會自動重新分配給其他健康的區域的工作者。 您不需要執行任何動作即可起始區域容錯移轉。
- 通知:Microsoft 不會在區域關閉時自動通知您。 不過,你可以使用 Azure Resource Health 監控單一資源的健康狀況,並設定資源 健康警示 來通知你問題。 你也可以使用 Azure Service Health 來了解整體服務的健康狀況,包括任何區域故障,並設定 服務健康警示 來通知你問題。
作用中要求:執行中的工作會移轉到健全可用性區域中的另一個工作者節點。
Stream Analytics 使用檢查點技術來維持運算處理的狀態。 在區域失效期間,故障區域內工人處理的飛行中事件會自動由健康區域的工作人員從最後檢查點重新處理。
預期資料遺失:工作檢查點系統確保不會遺失資料。
預期停機時間:平台將工作移動到健全的工作者節點後,進行中的工作會自動繼續。
流量重定向:服務會自動將所有新輸入資料重新導向健康區域的工作人員。 與作業區域的工人重新建立來自輸入來源的既有連結。 輸出連線也會同樣重新建立,確保資料在串流管線中持續流動。
區域復原
當故障的可用區域恢復時,Stream Analytics 會自動將其重新整合到主動處理池中。 作業開始利用恢復的基礎設施。
你不需要對區域恢復採取任何行動,因為平台負責區域恢復作業的所有面向,包括狀態同步和工作負載重新分配。
測試區域失敗
由於 Stream Analytics 平台負責管理流量路由、故障轉移與區域恢復,您無需啟動或驗證可用性區域故障流程。
對區域範圍故障的復原能力
Stream Analytics 將資源部署到單一的 Azure 區域。 如果區域無法使用,你的工作(以及專用叢集,如適用)也會無法使用。
自訂多區域解決方案,以實現復原能力
為了實現串流工作負載的多區域韌性,建議在多個區域部署獨立工作。 當你這麼做時,你就要負責部署和管理工作,並配置適當的資料路由與同步策略。 Stream Analytics 的工作是兩個獨立的領域。 你的應用程式負責將輸入資料傳送到區域輸入,並對區域輸出進行對帳。 欲了解更多此方法,請參閱「 實現串流分析職缺的地理冗餘」。
備份與還原
Stream Analytics 沒有內建備份與還原功能。
不過如果你想移動、複製或備份工作中的定義和設定,可以使用 Visual Studio Code 的 Stream Analytics 擴充功能,將 Azure 雲端中的現有工作匯出到本地電腦。 一旦你將整個 Stream Analytics 工作設定儲存在本地,就可以部署到相同或另一個 Azure 區域。 想了解如何複製、備份及移動你的串流分析工作,請參見 「複製、備份與移動你的 Azure 串流分析工作」。
服務維護的韌性
Stream Analytics 會自動進行平台維護,以套用安全更新、部署新功能並提升服務可靠性。 因此,Stream Analytics 可以每週(或更頻繁)部署服務更新。 Stream Analytics 服務確保任何新更新都經過嚴格的內部環,以確保品質最高。
請考慮以下幾點,以確保您的工作能對服務維護活動具備韌性:
將工作設定為可承受重新播放:檢查點通常用於在服務維護後還原資料。 不過,有時需要使用重新播放技術而非檢查點。 欲了解更多資訊以及如何設定您的輸入資料來源以避免重播導致輸出結果錯誤或不完整,請參閱服務升級後的工作恢復。
請考慮透過部署相同的工作來降低錯誤風險:服務在每個批次部署後會主動尋找多項訊號,以提高對未引入錯誤的信心。 不過,無論進行多少測試,現有且正在執行的工作仍可能因維護引入的問題而中斷。 如果你執行的是關鍵任務,應該採取措施避免這種風險。
你可以透過將相同工作部署到兩個 Azure 區域來降低錯誤影響工作負載的風險。 接著你應該 監控這些工作 ,以便在意外發生時收到通知。 如果這些工作在 Stream Analytics 服務更新後出現 失敗狀態 ,你應該:
- 請聯絡 Azure 客服 協助找出原因並解決問題。
- 將任何下游取用者容錯移轉以使用健全的工作輸出。
當你選擇 Azure 區域作為次要任務時,請考慮你的區域是否有 配對區域。 Azure 區域列表擁有最新的資訊,說明哪些區域是配對的。 Stream Analytics 保證成對區域的基礎設施會在不同時間更新。 串流分析的更新部署不會在成對區域中同時發生。 因此,更新之間有足夠的時間間隔,可以識別潛在問題並加以修復。
服務等級協定
Azure 服務的服務等級協定 (SLA) 描述服務的預期可用性,以及解決方案必須符合才能達到該可用性預期的條件。 如需詳細資訊,請參閱 在線服務的 SLA。
串流分析會針對管理工作的 API 呼叫,以及工作的實際執行,分別提供獨立的可用性 SLA。