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

使用完全托管的开源数据引擎进行流处理

Azure 事件中心
Azure Kubernetes 服务 (AKS)
Azure Cosmos DB
Azure Database for PostgreSQL
用于 Redis 的 Azure 缓存

本文展示使用完全托管的 Azure 数据服务的流式处理解决方案示例。

体系结构

显示流式传输数据如何流经系统的系统结构示意图。Kafka、Kubernetes、Cassandra、PostgreSQL 和 Redis 组件组成了系统。

下载此体系结构的 Visio 文件

工作流

  1. 适用于 Apache Kafka 功能的事件中心流式处理来自 Kafka 发生器的事件。

  2. Apache Spark 使用事件。 AKS 提供适用于 Apache Spark 作业的托管环境。

  3. 使用 Azure Cosmos DB for Apache Cassandra 的应用程序将事件写入 Cassandra。 此数据库用作事件的存储平台。 AKS 托管写入到 Cassandra 的微服务。

  4. Azure Cosmos DB 的更改源功能实时处理事件。

  5. 计划的应用程序对存储在 Cassandra 中的事件运行面向批处理的处理。

  6. 引用数据的存储扩充了事件信息。 面向批处理的应用程序将丰富的事件信息写入 PostgreSQL。 典型的引用数据存储包括:

  7. 面向批处理的应用程序处理 Cassandra 数据。 该应用程序将处理后的数据存储在 Azure Database for PostgreSQL 中。 此关系数据存储向需要丰富信息的下游应用程序提供数据。

  8. 报表应用程序和工具分析 PostgreSQL 数据库数据。 例如,Power BI 使用 Azure Database for PostgreSQL 连接器连接到数据库。 然后,此报表服务会显示数据的丰富视觉对象。

  9. Azure Cache for Redis 提供内存中缓存。 在此解决方案中,缓存包含关键事件上的数据。 应用程序将数据存储到缓存中,并从缓存中检索数据。

  10. 网站和其他应用程序使用缓存的数据来缩短响应时间。 数据在缓存中有时不可用。 在这些情况下,这些应用程序使用缓存端模式或类似的策略从 Azure Cosmos DB 中的 Cassandra 检索数据。

组件

  • 事件中心是一种完全托管的流式处理平台,每秒可处理数百万个事件。 事件中心为 Apache Kafka(一种广泛使用的开源流处理平台)提供了一个终结点。 组织使用终结点功能时,不需要为流处理生成和维护 Kafka 群集。 相反,它们可从事件中心提供的完全托管的 Kafka 实现中获益。

  • Azure Cosmos DB 是一种完全托管的 NoSQL 和关系数据库,提供多主复制。 Azure Cosmos DB 支持许多数据库、语言和平台的开源 API。 示例包括:

    通过 Azure Cosmos DB for Apache Cassandra,你可使用 Apache Cassandra 工具、语言和驱动程序来访问 Azure Cosmos DB 数据。 Apache Cassandra 是一种开源 NoSQL 数据库,适用于需要大量写入的工作负载。

  • AKS 是高度可用、安全且完全托管的 Kubernetes 服务。 Kubernetes 是一个快速发展的开源平台,用于管理容器化工作负载。 AKS 托管开源大数据处理引擎(如 Apache Spark)。 通过使用 AKS,你可以在托管环境中运行大规模流处理作业。

  • Azure Database for PostgreSQL 是一种完全托管的关系数据库服务。 它为 PostgreSQL 提供高可用性、弹性缩放、修补和其他管理功能PostgreSQL 是一种广泛采用的开源关系数据库管理系统。

  • Azure Cache for Redis 提供基于 Redis 软件的内存中数据存储。 Redis 是一种常用且开源的内存中数据存储。 会话存储、内容缓存和其他存储组件使用 Redis 来改善性能和可伸缩性。 Azure Cache for Redis 以完全托管的产品/服务形式提供开源 Redis 功能。

备选方法

你可将此解决方案中与开源兼容的产品和服务替换为其他产品和服务。 若要详细了解 Azure 中可用的开源服务,请参阅 Azure 上的开放源代码

方案详细信息

运行开源引擎的完全托管的 Azure 数据服务构成了此流式处理解决方案:

  • Azure 事件中心提供用于流引入的 Kafka 实现。
  • Azure Cosmos DB 支持 Cassandra 中的事件存储。
  • Azure Kubernetes Service (AKS) 托管 Kubernetes 微服务用于流式处理。
  • Azure Database for PostgreSQL 在 PostgreSQL 中管理关系数据存储。
  • Azure Cache for Redis 管理 Redis 内存中数据存储。

开源技术具有许多优势。 例如,组织可使用开源技术来执行以下操作:

  • 迁移现有工作负载。
  • 接入广泛的开源社区。
  • 限制供应商锁定。

Azure 工具和服务使开源技术可供访问,帮助组织充分利用这些优势并开发他们选择的解决方案。

此解决方案使用完全托管的平台即服务 (PaaS) 服务。 因此,Microsoft 负责修补、服务级别协议 (SLA) 维护和其他管理任务。 另一个优势是与 Azure 安全基础结构的本机集成。

可能的用例

此解决方案适用于各种场景:

  • 使用 Azure PaaS 服务构建使用开源技术的新式流式处理解决方案
  • 将开源流处理解决方案迁移到 Azure

注意事项

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

在设计和实现每个服务时谨记最佳做法。 有关每项服务的指南,请参阅 Microsoft 文档站点。 另请查看以下各节中的信息:

性能

  • 为 Azure Database for PostgreSQL 实现连接池。 可在应用程序中使用连接池库。 或者,可使用连接池程序,例如 PgBouncerPgpool。 建立与 PostgreSQL 的连接这一操作代价高昂。 借助连接池,你可避免降低应用程序性能。 PgBouncer 内置在 Azure Database for PostgreSQL 灵活服务器中。

  • 使用适当的分区策略配置 Azure Cosmos DB for Apache Cassandra 以获得最佳性能。 确定对表进行分区时是使用单个字段主键、复合主键还是复合分区键。

可伸缩性

  • 选择事件中心层时,请考虑流式处理要求:

    • 对于低于 120 MBps 的中等吞吐量要求,请考虑高级版层。 此层级会弹性缩放来满足流式处理要求。
    • 对于具有 GB 级数据流入量的高端流式处理工作负载,请考虑使用 专用层。 此层级是具有保证容量的单租户服务。 可以纵向扩展或缩减专用群集。
  • 如果工作负载不可预测且在高峰期,请考虑适用于 Azure Cosmos DB 的自动缩放预配的吞吐量。 可以将 Azure Cosmos DB 配置为使用手动预配的吞吐量或自动缩放预配的吞吐量。 使用自动缩放时,Azure 会根据你的使用情况自动并立即缩放每秒的请求单位数。

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

  • 使用 Azure 专用链接使 Azure 服务成为你的虚拟网络的一部分。 使用专用链接时,服务和网络之间的流量将流经 Azure 主干网,而不遍历公共 Internet。 此解决方案中的 Azure 服务支持所选 SKU 的专用链接。

  • 检查组织的安全策略。 使用 Azure Cosmos DB for Apache Cassandra,密钥可提供对密钥空间和表等资源的访问权限。 Azure Cosmos DB 实例会存储这些密钥。 安全策略可能要求你将这些密钥传播到密钥管理服务(如 Azure Key Vault)。 另外,请确保根据组织的策略来轮替密钥

复原能力

请考虑使用可用性区域来防范业务关键应用程序遭遇数据中心故障。 此解决方案的服务支持对已启用可用性区域的地区中的选定 SKU 使用可用性区域。 有关最新信息,请查看支持可用性区域的服务列表

成本优化

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

若要估算此解决方案的成本,请参阅 Azure 定价计算器。 此外,请记住以下几点:

  • 事件中心在“基本”、“标准”、“高级”和“专用”层中提供。 高级层或专用层最适用于大规模流式处理工作负载。 可以缩放吞吐量,因此请考虑从小开始,然后随着需求的增加而纵向扩展。

  • Azure Cosmos DB 提供了两种模型:

    • 预配的吞吐量模型,适用于要求苛刻的工作负载。 此模型有两个容量管理选项:标准和自动缩放。
    • 一种无服务器模型,非常适合运行小型高峰工作负载。
  • AKS 群集包含在 Azure 中运行的一组节点或虚拟机 (VM)。 计算、存储和网络组件的成本构成了群集的主要成本。

  • Azure Database for PostgreSQL 在单一服务器层和灵活服务器层中提供。 不同的层适用于不同的方案,例如,可预测、可突发和高性能工作负载。 成本主要取决于所选的计算节点和存储容量。 对于新的工作负载,请考虑选择灵活服务器层,因为它受支持的功能比单一服务器层更广泛。 另请注意,单一服务器位于弃用路径上。

  • Azure Cache for Redis 在以下各层中提供: 这些层可容纳从 250 MB 到数 TB 的缓存。 除了大小,其他要求也会影响层级选择:

    • 聚类
    • 持久性
    • 活动异地复制

部署此方案

部署此解决方案时,请记住以下几点:

作者

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

主要作者:

后续步骤

若要了解相关解决方案,请参阅以下信息: