你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 中选择流处理技术
本文对 Azure 中用于实时流处理的各种技术选择进行了比较。
实时流处理使用来自队列或基于文件存储的消息,处理消息,并将结果转发到另一个消息队列、文件存储或数据库。 处理可能包括对消息进行查询、筛选和聚合。 流处理引擎必须能够使用无限的数据流,以最低延迟生成结果。 有关详细信息,请参阅实时处理。
选择用于实时处理的技术时有哪些选项?
在 Azure 中,下列所有数据存储都将满足支持实时处理的核心要求:
- Azure 流分析
- 基于 Spark Streaming 的 HDInsight
- Azure Databricks 中的 Apache Spark
- Azure Functions
- Azure 应用服务 WebJobs
- Apache Kafka Streams API
关键选择条件
对于实时处理方案,通过回答以下问题开始选择适合需求的合适服务:
希望使用声明性方式还是命令性方式来创作流处理逻辑?
是否需要对时间处理或窗口化的内置支持?
数据是否会以 Avro、JSON 或 CSV 之外的格式到达? 如果是,请考虑使用自定义代码支持任何格式的选项。
是否需要将处理能力扩展为超出 1 GBps? 如果是,请考虑通过群集大小进行缩放的选项。
功能矩阵
以下各表汇总了功能上的关键差异。
常规功能
功能 | Azure 流分析 | 基于 Spark Streaming 的 HDInsight | Azure Databricks 中的 Apache Spark | Azure Functions | Azure 应用服务 WebJobs |
---|---|---|---|---|---|
可编程性 | SQL、JavaScript | C#/F#、Java、Python、Scala | C#/F#、Java、Python、R、Scala | C#、F#、Java、Node.js、Python | C#、Java、Node.js、PHP、Python |
编程范例 | 声明性 | 混合使用声明性和命令性方式 | 混合使用声明性和命令性方式 | 命令性 | 命令性 |
定价模型 | 流式处理单位 | 每分钟节点成本 | Databricks 单元 | 按函数执行和资源消耗 | 按应用服务计划小时 |
集成功能
功能 | Azure 流分析 | 基于 Spark Streaming 的 HDInsight | Azure Databricks 中的 Apache Spark | Azure Functions | Azure 应用服务 WebJobs |
---|---|---|---|---|---|
输入 | Azure 事件中心、Azure IoT 中心和 Azure Blob 存储/Data Lake Storage Gen2 | 事件中心、IoT 中心、Kafka、HDFS、存储 Blob、Azure Data Lake Store | 事件中心、IoT 中心、Kafka、HDFS、存储 Blob、Azure Data Lake Store | 支持的绑定 | 服务总线、存储队列、存储 Blob、事件中心、WebHook、Azure Cosmos DB、文件 |
接收器 | Azure Data Lake Storage Gen 1、Azure 数据资源管理器、Azure Database for PostgreSQL、Azure SQL Database、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 | 支持的绑定 | 服务总线、存储队列、存储 Blob、事件中心、WebHook、Azure Cosmos DB、文件 |
处理功能
功能 | Azure 流分析 | 基于 Spark Streaming 的 HDInsight | Azure Databricks 中的 Apache Spark | Azure Functions | Azure 应用服务 WebJobs |
---|---|---|---|---|---|
内置临时/窗口化支持 | 是 | 是 | 是 | 否 | 否 |
输入数据格式 | Avro、JSON 或 CSV、UTF-8 编码 | 使用自定义代码的任何格式 | 使用自定义代码的任何格式(使用自定义代码的任何格式) | 使用自定义代码的任何格式 | |
可伸缩性 | 查询分区 | 按群集大小界定 | 按 Databricks 群集规模配置界定 | 最多 200 个并行的函数应用实例处理 | 按应用服务计划容量界定 |
支持延迟到达和乱序事件处理 | 是 | 是 | 是 | 否 | 否 |
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Zoiner Tejada | CEO 兼架构师
后续步骤
- 应用服务概述
- 浏览 Azure Functions
- Azure 流分析入门
- 执行高级流式处理数据转换
- 在 HDInsight 中设置群集
- 在 Azure Databricks 中使用 Apache Spark