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

使用应用程序组治理客户端应用程序的资源

在 Azure 事件中心内,你可以使用应用程序组治理连接到事件中心的客户端应用程序的事件流式处理工作负载。 有关详细信息,请参阅使用应用程序组进行资源治理

本文介绍如何执行以下任务:

  • 创建应用程序组
  • 启用或禁用应用程序组
  • 定义阈值限制并将限制策略应用于应用程序组
  • 使用诊断日志验证限制

注意

应用程序组仅在“高级”和“专用”层中可用。

创建应用程序组

本部分介绍如何使用 Azure 门户、CLI、PowerShell 和 Azure 资源管理器 (ARM) 模板创建应用程序组。

可以通过以下步骤使用 Azure 门户创建应用程序组。

  1. 导航到事件中心命名空间。

  2. 在左侧菜单中,选择“设置”下的“应用程序组”。

  3. 在“应用程序组”页上,选择命令栏上的“+ 应用程序组”。

    Azure 门户中“应用程序组”页的屏幕截图。

  4. 在“添加应用程序组”页上,执行以下步骤:

    1. 指定应用程序组的“名称”。

    2. 确认选中“已启用”。 若要首先使应用程序组处于禁用状态,请清除“已启用”选项。 此标志确定应用程序组的客户端是否可以访问事件中心。

    3. 对于“安全性上下文类型”,请选择“命名空间共享访问策略”、“事件中心共享访问策略”或“Microsoft Entra 应用程序”。应用程序组支持在命名空间级别或实体(事件中心)级别选择 SAS 密钥。 创建应用程序组时,应将其关联到客户端应用程序使用的一个共享访问签名 (SAS) 或 Microsoft Entra 应用程序 ID。

    4. 如果选择了“命名空间共享访问策略”:

      1. 对于“SAS 密钥名称”,请选择可用作此应用程序组的安全上下文的 SAS 策略。 可以选择“添加 SAS 策略”以添加新策略,然后与应用程序组关联

        “添加应用程序组”页的屏幕截图,其中已选中“命名空间共享访问策略”选项。

    5. 如果选择了“事件中心共享访问策略”:

      1. 对于“SAS 密钥名称”,请从事件中心“共享访问策略”页复制 SAS 策略名称,并将其粘贴到文本框中

        “添加应用程序组”页的屏幕截图,其中已选中事件中心“共享访问策略”选项。

    6. 如果选择 Microsoft Entra 应用程序

      1. 对于 Microsoft Entra 应用程序(客户端)ID,请指定 Microsoft Entra 应用程序或客户端 ID。

      “添加应用程序组”页的屏幕截图,其中有 Microsoft Entra 选项。

支持的安全性上下文

查看自动生成的“客户端组 ID”,这是与应用程序组关联的唯一 ID。 应用程序治理范围(命名空间或实体级别)将取决于所使用的 Microsoft Entra 应用程序 ID 的访问级别。 下表显示了针对不同安全性上下文类型自动生成的客户端组 ID:

安全性上下文类型 自动生成的客户端组 ID
命名空间共享访问密钥 NamespaceSASKeyName=<NamespaceLevelKeyName>
Microsoft Entra 应用程序 AADAppID=<AppID>
事件中心共享访问密钥 EntitySASKeyName=<EntityLevelKeyName>

注意

使用命名空间共享访问密钥创建的所有现有应用程序组都将继续使用以 SASKeyName 开头的客户端组 ID。 但是,所有新的应用程序组都将具有更新的客户端组 ID,如上所示。

  1. 若要添加策略,请执行以下步骤:

    1. 输入该策略的名称。

    2. 对于“类型”,请选择“限制策略”。

    3. 对于指标 ID,请选择以下选项之一:“传入消息数”、“传出消息数”、“传入字节数”、“传出字节数”。 在以下示例中,已选择“传入消息数”。

    4. 对于速率限制阈,请输入阈值。 在下面的示例中,10000 被指定为传入消息数的阈值。

      包含传入消息数的策略的“添加应用程序组”页的屏幕截图。

      下面是添加了另一个策略的页面的屏幕截图。

      包含两个策略的“添加应用程序组”页的屏幕截图。

  2. 现在,在“添加应用程序组”页上,选择“添加”。

  3. 确认在应用程序组列表中看到应用程序组。

    “应用程序组”页的屏幕截图,其中包含所创建的应用程序组。

    可以通过选择列表中应用程序组旁边的垃圾桶图标按钮来将其删除。

启用或禁用应用程序组

你可以通过禁用包含客户端应用程序的应用程序组来阻止那些应用程序访问事件中心命名空间。 禁用应用程序组后,客户端应用程序将无法发布或使用数据。 该应用程序组的客户端应用程序的任何已建立连接也将终止。

本部分介绍如何使用 Azure 门户、PowerShell、CLI 和 ARM 模板启用或禁用应用程序组。

  1. 在“事件中心命名空间”页上,选择左侧菜单上的“应用程序组”。

  2. 选择要启用或禁用的应用程序组。

    屏幕截图显示“应用程序组”页,其中已选中应用程序组。

  3. 在“编辑应用程序组”页上,清除“启用”旁边的复选框以禁用应用程序组,然后选择页面底部的“更新”。 同样,选中用于启用应用程序组的复选框。

    屏幕截图显示“编辑应用程序组”页,其中已取消选择“启用”选项。

应用限制策略

你可以在创建应用程序组时或者向现有应用程序组添加零个或多个策略。 例如,你可以向 contosoAppGroup 添加与 IncomingMessagesIncomingBytesOutgoingBytes 相关的限制策略。 这些策略将应用于使用 SAS 策略 contososaspolicy 的客户端应用程序的事件流式处理工作负载。

若要了解如何在创建应用程序组时添加策略,请参阅创建应用程序组部分。

还可以在创建应用程序组后添加策略。

  1. 在“事件中心命名空间”页上,选择左侧菜单上的“应用程序组”。

  2. 选择要添加、更新或删除策略的应用程序组。

    屏幕截图显示“应用程序组”页,其中已选中应用程序组。

  3. 在“编辑应用程序组”页上,可以执行以下步骤:

    1. 更新现有策略的设置(包括阈值)
    2. 添加新策略

确定限制策略的阈值

Azure 事件中心支持应用程序指标日志功能,以观察系统中的常规吞吐量,并相应地确定应用程序组的阈值。 可按照以下步骤确定阈值:

  1. 在事件中心打开诊断设置,其中“应用程序指标日志”作为所选类别,然后选择“Log Analytics”作为目标。

  2. 创建一个不具有任何限制策略的空应用程序组。

  3. 继续以常规吞吐量向事件中心发送消息/事件。

  4. 转到“Log Analytics 工作区”,并在 AzureDiagnostics 表中查询正确的活动名称(基于 (resource-governance-overview.md#throttling-policy---threshold-limits))。 以下示例查询设置为跟踪传入消息数的阈值:

    AzureDiagnostics 
        | where ActivityName_s =="IncomingMessages" 
        | where Outcome_s =="Success"      
    
  5. 选择 Log Analytics 工作区上的“图表”部分,并根据 Y 轴上生成的时间和 x 轴上发送的消息计数绘制图表。

    Azure 门户中 Azure Monitor 日志页的屏幕截图。

    在此示例中,可以看到常规吞吐量从未超过 550 条消息(预计的当前吞吐量)。 此观察结果有助于定义实际阈值。

  6. 确定阈值后,可在应用程序组中添加新的限制策略。

发布或使用事件

成功将限制策略添加到应用程序组后,可以通过使用属于 contosoAppGroup 应用程序组的客户端应用程序来发布或使用事件,以测试限制行为。 若要测试,你可以使用 AMQP 客户端Kafka 客户端应用程序和用来创建应用程序组的同一 SAS 策略名称或 Microsoft Entra 应用程序 ID。

注意

当客户端应用程序受到限制时,发布或使用数据的速度应该会变慢。

使用应用程序组验证限制

确定限制策略的阈值限制类似,可使用应用程序指标日志来验证限制并查找更多详细信息。

可使用以下示例查询来找出特定时间范围内的所有受限制请求。 必须更新 ActivityName 以匹配预期受到限制的操作。


  AzureDiagnostics 
  |  where Category =="ApplicationMetricsLogs"
  | where ActivityName_s =="IncomingMessages" 
  | where Outcome_s =="Throttled"  
	

由于协议级别的限制,不会为事件中心(OutgoingMessagesOutgoingBytes)内的使用者操作生成受限制的请求日志。 当请求在使用者端受到限制时,可观察到出口吞吐量缓慢。

后续步骤