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

事件中心和可靠性

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

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

要了解如何使用事件中心创建更可靠的工作负载,请参考《Azure 事件中心 - 异地灾难恢复》。

以下部分专门介绍 Azure 事件中心和可靠性:

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

设计注意事项

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

清单

配置 Azure 事件中心时是否考虑了可靠性?

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

配置建议

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

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

源项目

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

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

后续步骤