你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

准实时湖屋数据处理

Azure AI 搜索
Azure Cosmos DB
Azure Data Lake
Azure 事件中心
Azure Synapse Analytics

数据驱动型企业需要使其后端和分析系统与面向客户的应用程序保持近实时同步。 事务、更新和更改的影响必须通过端到端流程、相关应用程序和联机事务处理 (OLTP) 系统准确反映。 OLTP 应用程序更改在使用数据的下游系统中反映的可容忍延迟可能只有几分钟。

本文介绍一个端到端解决方案,用于准实时数据处理,以保持湖屋数据同步。该解决方案使用Azure 事件中心、Azure Synapse Analytics 和 Azure Data Lake Storage 进行数据处理和分析。

Apache® 和 Apache Spark 是 Apache Software Foundation 在美国和/或其他国家/地区的商标或注册商标。 使用这些标记并不暗示获得 Apache Software Foundation 的认可。

体系结构

示意图显示端到端数据处理解决方案的数据流。

下载此体系结构的 Visio 文件

数据流

  1. 变更数据捕获是源系统侦听更改的先决条件。 Debezium 连接器可连接到不同的源系统,并在发生更改时利用这些更改。 连接器可从各种关系数据库管理系统 (RDBMS) 捕获更改并生成事件。 安装 Debezium 连接器需要 Kafka 连接系统。

  2. 连接器提取更改数据,并将捕获的事件发送到 Azure 事件中心。 事件中心可从多个源接收大量数据。

  3. 事件中心直接将数据流式传输到 Azure Synapse Analytics Spark 池,也可将数据以原始格式发送到 Azure Data Lake Storage 登陆区域。

  4. 其他批处理数据源可使用 Azure Synapse 管道将数据复制到 Data Lake Storage 并使其可用于处理。 端到端提取、转换和加载 (ETL) 工作流可能需要链接不同的步骤或在步骤之间添加依赖项。 Azure Synapse 管道可协调整个处理框架中的工作流依赖项。

  5. Azure Synapse Spark 池使用完全支持的 Apache Spark 结构化流式处理 API 来处理 Spark 流式处理框架中的数据。 数据处理步骤包含数据质量检查和高级业务规则验证。

  6. Data Lake Storage 以开放的 Delta Lake 格式存储经验证的数据。 Delta Lake 为现有数据湖提供原子性、一致性、隔离性和持久性 (ACID) 语义和事务、可缩放的元数据处理以及统一的流式和批数据处理。

    使用索引进行查询加速可进一步增强 Delta 的性能。 来自 Data Lake Storage 验证区域的数据也可以作为进一步高级分析和机器学习的源。

  7. 来自 Data Lake Storage 验证区域的数据(通过更多规则转换和扩充为最终处理状态)加载到专用 SQL 池以运行大规模分析查询。

  8. Power BI 使用通过专用 SQL 池公开的数据来生成企业级仪表板和报表。

  9. 你也可在 Data Lake Store 登陆区域中使用捕获的原始数据,并在以下方面使用 Delta 格式的验证数据:

    • 通过 Azure Synapse SQL 无服务器池进行进一步的临时探索性分析。
    • 通过 Azure 机器学习进行机器学习。
  10. 对于某些低延迟接口,必须对数据进行非规范化处理,以实现个位数服务器延迟。 此使用方案主要适用于 API 响应。 此方案在 NoSQL 数据存储(例如 Azure Cosmos DB)中查询文档以实现个位数毫秒响应。

  11. Azure Cosmos DB 分区策略可能不适用于所有查询模式。 如果是这种情况,可通过对 API 需要通过 Azure 认知搜索访问的数据编制索引来增强解决方案。 Azure Cosmos DB 和认知搜索可满足大多数需要低延迟查询响应的方案。

组件

此解决方案使用以下 Azure 组件:

  • 事件中心是一种托管的分布式引入服务,可扩展以引入大量数据。 使用事件中心订阅者-发布者机制,不同的应用程序可向事件中心中的主题发送消息,下游使用者可连接并处理消息。 事件中心捕获功能可在消息到达时以 AVRO 格式将消息写入 Data Lake Storage。 此功能可实现简单的微批处理和长期保留方案。 事件中心还提供与 Kafka 兼容的 API,并支持架构注册表。

  • Data Lake Storage 构成存储子系统,以原始和经过验证的格式存储所有数据。 Data Lake Storage 可大规模处理事务,并支持不同的文件格式和大小。 分层命名空间有助于将数据整理到熟悉的文件夹结构中,并支持 UniX 可移植操作系统接口 (POSIX) 权限。 Azure Blob 文件系统 (ABFS) 驱动程序提供与 Hadoop 兼容的 API。

  • Azure Synapse Analytics 是一种无限制的分析服务,它将数据集成、企业数据仓库和大数据分析结合在一起。 此解决方案使用以下 Azure Synapse Analytics 生态系统的功能:

    • Azure Synapse Spark 池提供按需 Spark 运行时,向开源 Spark 添加内置性能增强功能。 客户可配置灵活的自动缩放设置,通过 Apache Livy 终结点远程提交作业,并使用 Synapse Studio 笔记本界面获得交互式体验。

    • Azure Synapse SQL 无服务器池提供了一个接口,通过使用熟悉的 T-SQL 语法来查询湖屋数据。 没有要设置的基础结构,Azure Synapse 工作区部署会自动创建终结点。 Azure Synapse SQL 无服务器池支持就地数据的基本发现和探索,是用户临时查询分析的不错选择。

    • Azure Synapse 专用 SQL 池通过分列存储将数据存储到关系表中。 专用 SQL 池使用横向扩展体系结构跨多个节点分发数据处理。 PolyBase 查询将数据引入 SQL 池表。 这些表可以连接到 Power BI 进行分析和报告。

  • Power BI 提供了一个可视化界面,用于创建和访问报表和仪表板。 Power BI Desktop 可连接到各种数据源,将源合并到数据模型中,并生成报表或仪表板。 借助 Power BI,可根据业务需求转换数据,并通过 Power BI 服务与他人共享视觉对象和报表。

  • Azure Cosmos DB 是一个托管的多模式 NoSQL 数据库,支持开放 API,例如 MongoDB 和 Cassandra。 此解决方案对需要个位数毫秒响应时间和高可用性的应用程序使用 Azure Cosmos DB。 Azure Cosmos DB 在所有 Azure 区域提供多区域写入。 可使用适用于 Azure Cosmos DB 的 Azure Synapse Link 来获得见解并对数据进行实时分析。

  • Azure 认知搜索是一种云搜索服务,可为应用程序和 API 所需的数据编制索引。 认知搜索具有可选的 AI 扩充功能,有助于文本提取和从非文本文件中推断文本。 认知搜索与 Azure Data Lake Storage 和 Azure Cosmos DB 等服务集成,以便轻松访问和索引数据。 可使用 REST API 或 .NET SDK 查询索引的数据。 若要从两个单独的索引中获取数据,可将它们合并为单个索引或使用复杂数据类型

方案详细信息

要以准实时的方式处理更改的端到端工作流需要:

  • 变更数据捕获 (CDC) 技术。 OLTP 应用程序可能具有不同的后端数据存储,例如 SQL Server、MySQL 和 Oracle。 第一步是在发生更改时侦听更改,并将它们向前传播。
  • 用于大规模发布更改事件的引入缓冲区。 此服务应能够在消息到达时处理大量数据。 单个订阅者可连接到此系统并处理数据。
  • 分布式可缩放存储,按原始格式原样存储数据。
  • 一个分布式高效流式处理系统,允许用户重启和管理状态。
  • 一个大规模运行的分析系统,为业务决策提供支持。
  • 一个自助服务分析接口。
  • (对于低延迟 API 响应)一个 NoSQL 数据库,用于存储数据的非规范化表示形式。
  • (在某些情况下)一个系统,用于为数据编制索引,定期刷新索引,并使最新的数据可供下游使用。

上述所有技术都应使用相关的安全构造来实现外围安全、身份验证、授权和数据加密。

可能的用例

此解决方案非常适合:

  • 需要将更改从 OLTP 传播到联机分析处理 (OLAP) 的行业。
  • 需要数据转换或扩充的应用程序。

实时数据处理方案对于金融服务行业尤其重要。 例如,如果保险、信用卡或银行客户付款后立即联系客户服务,客户支持代理需要获得最新信息。

类似的方案适用于零售、商业和医疗保健行业。 启用这些方案可简化运营,从而提高组织工作效率和客户满意度。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

可靠性

可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性支柱概述

  • 事件中心在高级层和专用层上提供 90 天的数据保留期。 对于故障转移方案,可在配对区域中设置辅助命名空间,并在故障转移期间激活它。

  • Azure Synapse Spark 池作业每七天回收一次,因为节点已关闭进行维护。 在完成与系统关联的服务级别协议 (SLA) 时,请考虑此活动。 对于许多恢复时间目标 (RTO) 约为 15 分钟的情况,此限制不是问题。

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

  • 可根据工作负载特征从不同的事件中心层中进行选择。 事件中心根据存储在 Data Lake Storage 上的数据量,单独对捕获存储计费。

  • 考虑通过 Azure Data Lake Storage 上的层进行对象生命周期管理。 随着数据老化,可将数据从需要访问最新数据以进行分析的热层移动到价格低得多的冷存储层。 对于长期保留,冷存储层是一种经济高效的选择。

  • 在开发或测试环境中不使用专用 SQL 池时,可暂停该池。 可计划脚本以根据需要暂停池,也可以通过门户手动暂停池。

  • Azure Cosmos DB 提供不同的预配模型,例如无服务器、手动预配吞吐量和自动缩放。 请考虑对开发和测试工作负载使用无服务器预配。 你也可使用自动缩放,可在其中设置容器上每秒的最大请求单位数 (RU/s)。 容器上的吞吐量会在最大 RU/s 的 10%(作为较低阈值)和配置的最大 RU/s 之间自动缩放。

性能效率

性能效率是指工作负载能够以高效的方式扩展以满足用户对它的需求。 有关详细信息,请参阅性能效率要素概述

  • 可通过分区缩放事件中心。 请考虑将数据分区,以通过提交日志保留事件的顺序。 通过分区,可通过将可用的吞吐量容量最大化来创建多个并行日志。

  • 可根据工作负载使用小型、中型或大型虚拟机 (VM) SKU 设置 Azure Synapse Spark 池。 也可对 Azure Synapse Spark 池配置自动缩放,以应对峰值工作负载。 如果需要更多计算资源,群集会自动纵向扩展以满足需求,并在处理完成后纵向缩减。

  • 使用最佳做法在专用 SQL 池中设计表。 根据运行 SQL 池的层,应用相关的性能和可伸缩性限制。

  • Azure Cosmos DB 使用分区以根据分区键缩放容器。 基于分区键的所有数据构成逻辑分区。 确保根据工作负载要求选择正确的分区策略。 也可使用索引来加快数据检索速度。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开领英个人资料,请登录领英。

后续步骤