使用 Azure CLI 创建事件中心

已完成

你的团队决定使用 Azure 事件中心的功能来管理和处理系统中不断增加的事务量。

事件中心是一种 Azure 资源,因此第一步需要在 Azure 中创建一个新的中心并进行配置,使其满足应用的特定需求。

什么是 Azure 事件中心?

Azure 事件中心是一种基于云的事件处理服务,每秒能够接收和处理数百万个事件。 事件中心充当事件管道的“前门”,它接收传入的数据并存储该数据,直到处理资源可用为止。

向事件中心发送数据的实体称为“发布者”,从事件中心读取数据的实体称为“使用者”或“订阅者”。 事件中心位于发布者和订阅者之间,用于划分事件数据流的生产(从发布者)和使用(到订阅者)。 这种分离有助于管理事件生成率远高于使用率的情况。 下图显示了事件中心的角色。

An illustration showing an Azure event hub placed between four publishers and two subscribers. The event hub receives multiple events from the publishers, serializes the events into data streams, and makes the data streams available to subscribers.

事件

事件是包含通知的小型信息包(数据报)。 事件可以单独发布,也可批量发布,但一次发布(单独或批量)不能超过 1 MB。

发布者和订阅者

事件发布者是可以使用 HTTPS、高级消息队列协议 (AMQP) 1.0 或 Apache Kafka 发送事件的任何应用或设备。

  • 对于频繁发送数据的发布者,AMQP 具有更好的性能。 但是,它具有较高的初始会话开销,因为必须首先设置持久的双向套接字和传输级别安全性 (TLS) 或 SSL/TLS。
  • 对于间歇性更高的发布,HTTPS 是更好的选择。 虽然 HTTPS 对每个请求都要收取更多费用,但没有会话初始化开销。
  • 事件中心提供与 Apache Kafka 生成者和使用者 API 兼容的终结点,大多数现有 Apache Kafka 客户端应用程序可以使用这些 API 作为运行你自己的 Apache Kafka 群集的替代方法。 事件中心 1.0 及更高版本支持 Apache Kafka 的生成者和使用者 API 客户端。 有关详细信息,请参阅适用于 Apache Kafka 的事件中心

事件订阅者是使用受支持的两种编程方法之一来接收和处理来自事件中心的事件的应用。

  • EventHubReceiver - 一种提供有限管理选项的简单方法。
  • EventProcessorHost - 我们稍后将在本模块中使用的高效方法。

使用者组

事件中心“使用者组”表示事件中心数据流的特定视图。 当使用单独的使用者组时,多个订阅者应用可以独立地处理事件数据流,而不会影响其他应用。 但是,使用多个使用者组不是必需的,并且对于许多应用来说,单个默认的使用者组就足够了。

定价

Azure 事件中心有四个定价层:基本、标准、高级和专用。 这些层在受支持的连接、可用使用者组的数量和吞吐量方面有所不同。 使用 Azure CLI 创建事件中心命名空间时,如果未指定定价层,则会分配默认的“标准”(20 个使用者组,1000 个中转连接)。 有关这些层之间的主要差异,请参阅 Azure 事件中心 - 定价

创建和配置事件中心

创建新的事件中心需要执行两个主要步骤。 第一步是定义事件中心命名空间。 第二步是在该命名空间中创建事件中心。

定义事件中心命名空间

事件中心命名空间是用于管理一个或多个事件中心的容器。 创建事件中心命名空间通常涉及以下配置:

定义命名空间级别设置

命名空间容量(使用标准层的吞吐量单位进行配置)、定价层和性能指标是在命名空间级别上进行定义的。 这些设置适用于该命名空间中的所有事件中心。 如果未定义这些设置,则使用默认值:容量为 1,定价层为 Standard

请注意以下几点:

  • 必须根据你的 Azure 预算期望值平衡你的配置。

  • 可能需要为不同的吞吐量需求配置不同的事件中心。 例如,如果你有一个销售数据应用,并且计划使用两个事件中心,则为每个中心使用单独的命名空间是有意义的。

    你将为实时销售数据的高吞吐量集合配置一个命名空间,并为不常用的事件日志收集配置一个命名空间。 这样,你只需要在实时销售数据中心内配置(并支付)高吞吐量容量。

    1. 为命名空间选择唯一的名称。 可通过此 URL 访问命名空间:namespace.servicebus.windows.net

    2. 定义以下可选属性:

      • 将此命名空间区域设为冗余。 区域冗余跨具有独立的电源、网络和冷却基础结构的独立数据中心复制数据。

      • 启用吞吐量单位(标准层)的自动纵向扩展。 自动膨胀提供了自动纵向扩展选项,可以将吞吐量单位的数量增加到最大值。 此选项可用于在传入或传出数据速率超过当前设置的吞吐量单位的情况下避免限制。

用于创建事件中心命名空间的 Azure CLI 命令

若要创建新的事件中心命名空间,请使用 az eventhubs namespace 命令。 下面是我们在本练习中将使用的命令的简短说明。

命令 说明
create 创建事件中心命名空间。
authorization-rule 同一命名空间内的所有事件中心共享共同的连接凭据。 将应用配置为使用事件中心发送和接收消息时,需要这些凭据。 此命令返回事件中心命名空间的连接字符串。

配置新的事件中心

创建事件中心命名空间后,可以创建事件中心。 在创建事件中心时,有几个必需参数。

创建事件中心需要以下参数:

  • 事件中心名称 - 事件中心名称在订阅中唯一且:
    • 介于 1 和 50 个字符之间。
    • 只包含字母、数字、句点、连字符和下划线。
    • 以字母或数字开头和结尾。
  • 分区计数 - 事件中心所需的分区数(对于标准层,介于 2 到 32 之间)。 分区计数应与预期的并发使用者数直接相关,并且在创建中心后无法更改。 分区分隔消息流,以便使用者或接收方应用只需要读取数据流的特定子集。 如果未定义,则该值默认为 4。
  • 消息保留期 - 如果由于某种原因需要重播数据流,消息将保持可用的天数(对于标准层为 1 到 7 天)。 如果未定义,则该值默认为 7。

可以选择性地配置事件中心,以将数据流式传输到 Azure Blob 存储或 Azure Data Lake Storage。

用于创建事件中心的 Azure CLI 命令

要使用 Azure CLI 创建新的事件中心,请运行 az eventhubs eventhub 命令集。 下面是我们在本练习中将使用的命令的简短说明。

命令 说明
create 在指定的命名空间中创建事件中心。
show 显示事件中心的详细信息。

注意

有关事件中心不同层的配额和限制,请参阅 Azure 事件中心配额和限制

总结

若要部署 Azure 事件中心,必须配置事件中心命名空间,然后配置事件中心本身。 在下一单元中,你将了解创建新的命名空间和事件中心的详细步骤。