本文會比較 Azure 中即時串流處理的技術選擇。
串流數據概觀
組織通常會有各種數據源,可同時發出訊息、記錄或數據。 數據量的範圍可以從幾位元組到數 MB(MB)。 串流數據會以連續的累加方式以大量方式發出,以近乎即時的方式進行處理。 這種類型的數據報含資訊,讓公司用來即時分析和查看其業務的各個層面,例如應用程式記錄、地理位置更新、事件和感測器讀數。
串流資料通常具有下列特性:
數據完整性不完善: 來源的暫時錯誤可能會導致數據元素遺失。 數據流的連續本質可能會造成數據不一致。 因此,串流處理和分析系統通常會包含數據驗證的邏輯,以減輕這些錯誤。
連續數據流: 數據流沒有開頭或結尾,因此您必須持續收集數據。 例如,只要伺服器執行,伺服器活動記錄就會累積。
不同的數據格式: 您可以串流多種格式的數據,例如 JSON、Avro 和 CSV。 而且可能包含各種數據類型,例如字串、數位、日期和二進位類型。 串流處理系統必須處理這些數據變化。
時間敏感數據順序: 數據流中的個別元素包含時間戳。 數據流本身可能具有時效性,並在特定時間之後遺失值。 在某些情況下,您必須保留數據處理順序。
即時處理的技術選項
為了協助您選擇正確的技術,本節概述 Azure 中的常見選項,從擷取到取用。 每個小節會根據串流處理流程中的角色來強調建議的技術。
高階串流處理流程
下載此架構的 Visio 檔案。
流媒體製作人
串流產生者會產生數據並將其推送至 Azure 擷取服務。 它們會持續從物聯網 (IoT) 裝置、應用程式記錄或資料庫等來源產生數據。
串流產生者提供下列優點:
擷取近乎實時的數據。 生產者可以持續從IoT裝置、使用者互動和應用程式記錄等來源收集數據。 他們會將數據串流至 Azure 事件中樞或 Azure IoT 中樞等 Azure 服務。
使用批處理和壓縮來優化輸送量。 產生者可以批處理訊息並套用壓縮,以將傳輸期間的數據大小降到最低。 這些功能可提升效率。
確保可靠的傳輸,並具備錯誤處理和重試功能。 產生者可以透過自動重試來管理網路中斷或代理失敗,以確保可靠的數據傳送。
使用等冪保證數據完整性。 您可以設定產生者 只支援一次傳遞,這可防止重複的訊息,並確保一致的數據流。
元件
IoT 中樞 內嵌IoT數據。 它提供雙向通訊、裝置驗證和離線訊息緩衝等功能。 它非常適合用來管理IoT裝置及其數據流。
異動數據擷取 (CDC) 產生者包括 Azure 資料庫,例如 Azure SQL Database 和 Azure Cosmos DB。
若要存取 CDC 數據,您可以使用連接器,例如 SQL Database 的 Debezium 或 Azure Cosmos DB 變更摘要。 這些連接器通常裝載在 Azure Functions 或 Azure App Service 環境中。 如果您使用 Microsoft Fabric 事件數據流功能,則不需要個別的應用程式,例如 Debezium,將 CDC 產生者與下游取用者連線。
Debezium 之類的自定義應用程式也可以裝載為受控服務上的獨立應用程式,例如 Azure Kubernetes Service (AKS) 或 App Service 環境。 此方法提供更多控制和自定義。
一般功能
| 能力 | IoT 中心 | CDC 產生者 | 自訂應用程式 |
|---|---|---|---|
| 裝置度量和記錄 | 是的 | 無 | 無 |
| 受管理的服務 | 是的 | 無 | 無 |
| 延展性 | 是的 | 是的 | 是的 |
串流擷取
產生者,例如 Web 和行動應用程式、IoT 裝置和感測器,都會持續產生數據。 串流處理管線必須有效率地內嵌此數據,以進行即時和批次分析。
請考慮下列因素:
數據速度: 決定如何處理來自多個來源的高頻率數據,其格式和大小通常會有所不同。
延展性: 確保擷取層可以在數據量、多樣性和速度增加時動態調整。
數據完整性和可靠性: 防止傳輸期間數據遺失或重複。
數據流擷取元件
事件中樞 是一項實時數據擷取服務,每秒可處理數百萬個事件,因此非常適合高輸送量案例。 它可以以動態方式調整,並以低延遲處理大量數據。
事件中樞支持數據分割等功能,以進行平行處理和數據保留原則。 其與 Azure 服務整合,例如 Azure 串流分析、網狀架構、Azure Databricks 和 Azure Functions。 事件中樞也會與 Apache Kafka 整合,而且您可以執行現有的 Kafka 工作負載,而不需要變更任何程式代碼。
事件方格 是完全受控的事件路由服務。 它會擷取、散發及回應來自各種來源的事件,因此非常適合即時的事件驅動架構。 其可有效率地處理事件通知,並與 Azure 服務、自定義應用程式和合作夥伴系統整合。 事件方格在串流擷取中扮演重要角色。
Azure HDInsight 上的 Kafka 是受控 Apache Kafka 服務,可大規模擷取和處理實時數據。 使用此服務可從各種來源擷取和儲存串流數據,例如IoT裝置、應用程式記錄和社交媒體摘要。 此服務可額外控制受控基礎結構上的 Kafka 組態。
Confluent Cloud 上的 Apache Kafka 是完全受控的 Apache Kafka 服務,可用於實時數據擷取。 它會與 Azure 整合,以簡化部署和調整。 此解決方案包含架構登錄、適用於串流查詢的 ksqlDB 和企業級安全性等功能。 如果您使用 Confluent 的連接器和串流處理工具擴充生態系統,請使用此選項。
資料流引入的一般功能
| 能力 | 事件中樞 | HDInsight 上的 Kafka | Confluent 上的 Kafka |
|---|---|---|---|
| 訊息保留期 | 是的 | 是的 | 是的 |
| 訊息大小限制 | 1 MB | 可配置的 | 可配置的 |
| 受管理的服務 | 是的 | 受控基礎結構即服務 | 是的 |
| 自動縮放 | 是的 | 是的 | 是的 |
| 合作夥伴方案 | 無 | 無 | 是的 |
| 計價模式 | 以層級為基礎 | 每個叢集時數 | 取用模型 |
串流處理
此步驟牽涉到即時轉換數據、篩選、匯總、擴充或分析內嵌數據的程式。
請考慮下列因素:
具狀態與無狀態處理: 決定您的處理取決於先前看到的數據(具狀態)或獨立事件(無狀態)。
事件時間處理: 考慮到您必須將多個來源的資料流一起處理的情況,尤其是針對延遲到達的記錄。
視窗: 使用滑動或輪轉視窗來管理以時間為基礎的匯總和分析。
容錯: 確定系統可以從失敗中復原,而不會遺失數據或重新處理錯誤。
串流處理元件
串流分析 是一種受控服務,使用以 SQL 為基礎的查詢語言來啟用即時分析。 使用此服務來進行簡單的處理工作,例如篩選、匯總和聯結數據流。 它會與事件中樞、IoT 中樞和 Azure Blob 記憶體緊密整合,以進行輸入和輸出。 串流分析最適合低複雜度、即時工作,其中具有 SQL 型查詢的簡單受控解決方案就已足夠。
Spark 結構化串流 是由 Fabric 和 Azure Databricks 等服務所支援。 這些服務提供以 Apache Spark 為基礎的整合分析平臺,並可處理複雜的數據轉換、機器學習管線和巨量數據工作負載。 Spark 串流 API 支援與 Delta Lake 的深度整合,以進行數據版本設定和一致性。
Fabric 事件串流 是 Fabric 內的實時數據流功能,這是統一的分析平臺。 Eventstreams 可讓您順暢地擷取、處理和整合串流數據,以進行即時分析和應用程式。 用戶可以使用最少的技術專業知識來存取事件串流。 它提供拖放介面來設定數據管線。
Azure Functions 是無伺服器計算服務,可用於事件驅動處理。 它適用於輕量型工作,例如根據即時事件轉換數據或觸發工作流程。 Azure 函式的設計上是無狀態的。 耐久函式功能可擴充功能,以支援具狀態工作流程以進行複雜的事件協調。
串流處理一般功能
| 能力 | 串流分析 | Spark 結構化串流 (Fabric、Azure Databricks) | Fabric 事件流 | Azure Functions |
|---|---|---|---|---|
| 微批處理 | 是的 | 是的 | 是的 | 無 |
| 事件型處理 | 無 | 無 | 是的 | 是的 |
| 有狀態的處理 | 是的 | 是的 | 是的 | 無 |
| 檢查點支援 | 是的 | 是的 | 是的 | 無 |
| 低程式代碼介面 | 是的 | 無 | 是的 | 無 |
| 計價模式 | 串流單位 | 是的 | 布料 SKU | 是的 |
串流匯入點
在系統處理數據之後,它會將數據導向適當的目的地或 接收,以供儲存、進一步分析,或在即時應用程式中使用。 這些目標可以包括資料庫、數據湖、分析工具或用於資料視覺化的儀錶板。
請考慮下列因素:
數據耗用量和使用方式: 使用 Power BI 進行即時分析或報表儀表板。 它與 Azure 服務整合得很好,並提供數據流的即時視覺效果。
低延遲需求: 判斷您的系統是否必須提供即時資料串流的分析,例如裝置指標和應用程式日誌。 某些應用程式可能也需要超低的讀取和寫入延遲,使其適用於作業分析或即時應用程式。
擴展性和數量: 評估工作負載對於大量數據的擷取需求、支援各種數據格式,以及如何有效率和符合成本效益地擴展規模。
串流接收元件
Azure Data Lake Storage 是可調整、分散式且符合成本效益的解決方案,可用於儲存非結構化和半結構化數據。 它支援 PB 規模的記憶體和高輸送量工作負載,以儲存大量的串流數據。 它也可讓您快速讀取和寫入作業,以支援串流數據和實時數據管線的分析。
Fabric 事件屋是 KQL 資料庫,用於即時分析和探索通風型資料,例如計量和記錄資料、時間序列資料和 IoT 資料。 它支援以低延遲每秒擷取數百萬個事件。 此功能可讓您近乎立即存取串流數據。 Eventhouse 與 Fabric 生態系統深入整合。 它可讓使用者使用Power BI 之類的工具來立即查詢和分析串流數據。
Azure Cosmos DB 是 NoSQL 資料庫,適用於低延遲、全域散發且高度可調整的數據記憶體。 它提供高吞吐量,並且可以以一致的性能處理大量流數據。
SQL Database 是完全受控的雲端式關係資料庫服務。 它是建置在 SQL Server 引擎上。 因此,它提供傳統 SQL Server 資料庫的功能,以及雲端式延展性、可靠性及降低管理額外負荷的優點。
串流匯集器的一般功能
| 能力 | Data Lake Storage | Fabric 活動館 | Azure Cosmos DB | SQL Database |
|---|---|---|---|---|
| 一般用途物件存放區 | 是的 | 無 | 無 | 無 |
| 串流數據匯總 | 無 | 是的 | 無 | 無 |
| JSON 檔的低延遲讀取和寫入 | 無 | 是的 | 是的 | 無 |
| Power BI 的結構化數據匯總 | 無 | 是的 | 無 | 是的 |
| 計價模式 | 每 GB 或 TB | 布料 SKU | 要求單位 | 資料庫交易單位 (DTU) 或虛擬核心 |
參與者
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- Pratima Valavala |主要解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。
下一步
探索下列訓練模組: