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

Azure 事件中心的体系结构最佳做法

Azure 事件中心 是一种可缩放的事件处理服务,它引入和处理大量事件和数据,延迟低且可靠性高。 它可以每秒接收和处理数百万个事件。 可以使用任何实时分析提供程序或批处理和存储适配器来转换和存储发送到事件中心的数据。

有关使用事件中心的详细信息,请参阅 Azure 事件中心文档 ,了解如何使用事件中心从连接的设备和应用程序每秒引入数百万个事件。

若要了解使用事件中心的方法有助于实现工作负荷的卓越运营和可靠性,请参阅以下文章:

从良好架构框架角度来看,以下部分特定于 Azure 事件中心:

  • 设计注意事项
  • 配置清单
  • 建议的配置选项
  • 源项目

设计注意事项

Azure 事件中心提供运行时间 SLA。 有关详细信息,请参阅 事件中心的 SLA

清单

您是否已配置 Azure 事件中心,并考虑到卓越的运营管理?

  • 分别为事件发布者和使用者创建 SendOnly 和 ListenOnly 策略。
  • 使用 SDK 将事件发送到事件中心时,请确保正确捕获重试策略(EventHubsExceptionOperationCancelledException)引发的异常。
  • 在高吞吐量方案中,使用批处理事件。
  • 每个使用者都可以从事件中心 SKU 所支持的一个到最大分区读取事件
  • 开发新应用程序时,请使用 EventProcessorClient (.NET 和 Java) 或 EventHubConsumerClient (Python 和 JavaScript) 作为客户端 SDK。
  • 作为解决方案范围的可用性和灾难恢复策略的一部分,请考虑启用事件中心异地灾难恢复选项。
  • 当解决方案具有大量独立事件发布者时,请考虑使用事件发布服务器进行精细的访问控制。
  • 不要将事件发布到特定分区。
  • 频繁发布事件时,请尽可能使用 AMQP 协议。
  • 分区数反映了可以实现的下游并行度。
  • 确保每个消费应用程序使用单独的消费者组,并且每个消费者组只有一个活动接收器在运行。
  • 使用捕获功能时,请仔细考虑时间窗口和文件大小的配置,尤其是对于低事件量。

配置建议

在配置 Azure 事件中心时,请考虑以下建议来优化可靠性:

建议 DESCRIPTION
使用 SDK 将事件发送到事件中心时,请确保正确捕获重试策略(EventHubsExceptionOperationCancelledException)引发的异常。 使用 HTTPS时,请确保实现正确的重试模式。
在高吞吐量方案中,使用批处理事件。 该服务会将包含多个事件的数组传递到 json 订阅服务器,而不是一个包含一个事件的数组。 消费应用程序必须处理这些数组。
每个使用者都可以从事件中心 SKU 所支持的一个到最大分区读取事件。 为了在使用应用程序端实现最大缩放,每个使用者都应从单个分区读取。
开发新应用程序时,请使用 EventProcessorClient (.NET 和 Java) 或 EventHubConsumerClient (Python 和 JavaScript) 作为客户端 SDK。 EventProcessorHost 已弃用。
作为解决方案范围的可用性和灾难恢复策略的一部分,请考虑启用事件中心异地灾难恢复选项。 此选项允许在不同的区域中创建辅助命名空间。 只有活动命名空间能在任何时候接收消息。 消息和事件不会复制到次要区域。 区域故障转移的 RTO 最多为 30 分钟。 确认此 RTO 符合客户的要求,并符合更广泛的可用性策略。 如果需要更高的 RTO,请考虑实现客户端故障转移模式。
当解决方案具有大量独立事件发布者时,请考虑使用事件发布服务器进行精细的访问控制。 事件发布服务器自动将分区键设置为发布者名称,因此仅当事件源自所有发布服务器时,才应使用此功能。
不要将事件发布到特定分区。 如果排序事件至关重要,请实现下游排序或使用其他消息传送服务。
频繁发布事件时,请尽可能使用 AMQP 协议。 AMQP 在初始化会话时具有更高的网络成本,但是 HTTPS 对每个请求都需要 TLS 开销。 AMQP 对于频繁发布者具有更高的性能优势。
分区数反映了可以实现的下游并行度。 对于最大吞吐量,请使用创建事件中心时 SKU 支持的最大分区数。 通过增加分区数,可以缩放并发处理实体以匹配分区,确保最佳的发送和接收可用性。
使用捕获功能时,请仔细考虑时间窗口和文件大小的配置,尤其是对于低事件量。 Data Lake gen2 将对最小事务大小收取费用。 如果设置的时间窗口太低,以至于文件未达到最小大小,则会产生额外的费用。

源项目

若要查找具有 基本 SKU 的事件中心命名空间,请使用以下查询:

Resources 
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name

后续步骤