在 Azure 中選擇串流處理技術
本文會比較 Azure 中即時串流處理的技術選擇。
即時串流處理會取用來自佇列或檔案型記憶體的訊息、處理訊息,並將結果轉送至另一個消息佇列、檔案存放區或資料庫。 處理可能包括查詢、篩選和匯總訊息。 串流處理引擎必須能夠取用無盡的數據串流,並以最少的延遲產生結果。 如需詳細資訊,請參閱 實時處理。
選擇用於即時處理的技術時,有哪些選項?
在 Azure 中,下列所有資料存放區都會符合支援即時處理的核心需求:
- Azure 串流分析
- HDInsight 搭配 Spark 串流
- Azure Databricks 中的 Apache Spark
- HDInsight 與 Storm
- Azure Functions
- Azure App Service WebJobs
- Apache Kafka 串流 API
索引鍵選取準則
針對實時處理案例,請藉由回答下列問題,開始為您的需求選擇適當的服務:
您是否偏好宣告式或命令式方法來撰寫數據流處理邏輯?
您是否需要時態處理或視窗處理的內建支援?
您的資料是否以 Avro、JSON 或 CSV 以外的格式抵達? 如果是,請考慮使用自定義程式代碼支援任何格式的選項。
您需要調整 1 GBps 以外的處理規模嗎? 如果是,請考慮使用叢集大小進行調整的選項。
功能矩陣
下表摘要說明功能的主要差異。
一般功能
功能 | Azure 串流分析 | HDInsight 搭配 Spark 串流 | Azure Databricks 中的 Apache Spark | HDInsight 與 Storm | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|---|
可程式性 | SQL、JavaScript | C#/F#、Java、Python、Scala | C#/F#、Java、Python、R、Scala | C#、Java | C#、F#、Java、Node.js、Python | C#、Java、Node.js、PHP、Python |
程序設計範例 | 宣告式 | 宣告式和命令式混合 | 宣告式和命令式混合 | 命令式 | 命令式 | 命令式 |
計價模式 | 串流單位 | 每個叢集時數 | Databricks 單位 | 每個叢集時數 | 每個函式執行和資源耗用量 | 每個 App Service 方案小時 |
整合功能
功能 | Azure 串流分析 | HDInsight 搭配 Spark 串流 | Azure Databricks 中的 Apache Spark | HDInsight 與 Storm | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|---|
輸入 | Azure 事件中樞、Azure IoT 中樞、Azure Blob 記憶體/ADLS Gen2 | 事件中樞、IoT 中樞、Kafka、HDFS、儲存體 Blob、Azure Data Lake Store | 事件中樞、IoT 中樞、Kafka、HDFS、儲存體 Blob、Azure Data Lake Store | 事件中樞、IoT 中樞、儲存體 Blob、Azure Data Lake Store | 支援的系結 | 服務匯流排、儲存體 佇列、儲存體 Blob、事件中樞、WebHook、Azure Cosmos DB、檔案 |
接收 | Azure Data Lake 儲存體 Gen 1、Azure 數據總管、適用於 PostgreSQL 的 Azure 資料庫、Azure SQL 資料庫、Azure Synapse Analytics、Blob 記憶體和 Azure Data Lake Gen 2、Azure 事件中樞、Power BI、Azure 數據表記憶體、Azure 服務匯流排 佇列、Azure 服務匯流排主題、Azure Cosmos DB、Azure Functions | HDFS、Kafka、儲存體 Blob、Azure Data Lake Store、Azure Cosmos DB | HDFS、Kafka、儲存體 Blob、Azure Data Lake Store、Azure Cosmos DB | 事件中樞、服務匯流排、Kafka | 支援的系結 | 服務匯流排、儲存體 佇列、儲存體 Blob、事件中樞、WebHook、Azure Cosmos DB、檔案 |
處理功能
功能 | Azure 串流分析 | HDInsight 搭配 Spark 串流 | Azure Databricks 中的 Apache Spark | HDInsight 與 Storm | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|---|
內建時態/視窗支援 | Yes | .是 | .是 | .是 | 無 | No |
輸入數據格式 | Avro、JSON 或 CSV、UTF-8 編碼 | 使用自定義程式代碼的任何格式 | 使用自定義程式代碼的任何格式 | 使用自定義程式代碼的任何格式 | 使用自定義程式代碼的任何格式 | 使用自定義程式代碼的任何格式 |
延展性 | 查詢分割區 | 依叢集大小系結 | 由 Databricks 叢集調整組態系結 | 依叢集大小系結 | 最多 200 個函式應用程式實例平行處理 | 由 App Service 方案容量系結 |
延遲抵達和順序錯亂的事件處理支援 | Yes | .是 | .是 | .是 | 無 | No |
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Zoiner Tejada |CEO 和架構師
下一步
- App Service 概觀
- 探索 Azure Functions
- 開始使用 Azure 串流分析
- 執行進階串流數據轉換
- 在 HDInsight 中設定叢集
- 在 Azure Databricks 中使用 Apache Spark
相關資源
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應