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

有关Azure 事件中心的 Azure 良好架构框架视角

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

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

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

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

  • 设计注意事项
  • 配置清单
  • 推荐配置选项
  • 源项目

设计注意事项

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

清单

你是否出于卓越运营考虑而配置了 Azure 事件中心?

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

配置建议

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

建议 说明
使用 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

下一步