探索 Azure 事件网格
Azure 事件网格是一种高度可缩放的完全托管的发布/订阅消息分发服务,它使用超文本传输协议 (HTTP) 和消息队列遥测传输 (MQTT) 协议提供灵活的消息使用模式。 借助 Azure 事件网格,可以使用设备数据生成数据管道,集成应用程序,以及生成事件驱动的无服务器体系结构。 客户端可以使用事件网格通过 MQTT v3.1.1 与 v5.0 协议发布和订阅消息,以支持物联网 (IoT) 解决方案。 你可以使用事件网格通过 HTTP 生成事件驱动的解决方案,在其中,发布服务器服务向订阅服务器应用程序通告其系统状态更改(事件)。 可将事件网格配置为向订阅服务器发送事件(推送传递),或者订阅服务器可以连接到事件网格以读取事件(拉取传递)。 事件网格支持 CloudEvents 1.0 规范,可提供跨系统的互操作性。
Azure 事件网格中的概念
你需要了解有关 Azure 事件网格的几个概念来帮助你入门。
发布服务器
发布服务器是将事件发送到事件网格的应用程序。 它可以是事件的来源应用程序,即事件源。 Azure 服务将事件发布到事件网格,以在其服务中通告发生了这些事件。 可以从自己的应用程序发布事件。 在 Azure 外部托管服务的组织也可以通过事件网格发布事件。
合作伙伴是一种发布者,它会从其系统发送事件供 Azure 客户使用。 合作伙伴不仅可以将事件发布到 Azure 事件网格,还可以从中接收事件。 这些功能通过合作伙伴事件功能启用。
事件和 CloudEvents
事件是完全描述系统中所发生情况的最少量信息。 每个事件都有共同的信息,例如:事件的 source、事件发生的 time 和唯一标识符。 此外,每个事件还具有仅与特定事件类型相关的特定信息。
事件网格符合 Cloud Native Computing Foundation 的开放标准 CloudEvents 1.0 规范,该规范使用具有 JSON 格式的 HTTP 协议绑定。 这意味着,解决方案将使用如下例所示的格式发布和使用事件消息:
{
"specversion" : "1.0",
"type" : "com.yourcompany.order.created",
"source" : "https://yourcompany.com/orders/",
"subject" : "O-28964",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"orderId" : "O-28964",
"URL" : "https://com.yourcompany/orders/O-28964"
}
}
一个事件允许的最大大小为 1 MB。 超过 64 KB 的事件以 64 KB 为增量计费。
事件源
事件源即事件发生的位置。 每个事件源都与一个或多个事件类型相关。 例如,Azure 存储是 blob 创建事件的事件源。 IoT 中心是设备创建的事件的事件源。 你的应用程序是你定义的自定义事件的事件源。 事件源负责将事件发送到事件网格。
主题
主题包含已发布到事件网格的事件。 通常会将主题资源用于相关事件的集合。 为了响应某些类型的事件,订阅服务器(Azure 服务或其他应用程序)会确定要订阅哪些主题。 有多种类型的主题:自定义主题、系统主题与合作伙伴主题。
系统主题是 Azure 服务提供的内置主题。 在 Azure 订阅中看不到系统主题,因为发布服务器拥有这些主题,但你可以订阅它们。 若要订阅,可以提供想要从中接收事件的资源的相关信息。 只要你有权访问资源,就可以订阅其事件。
自定义主题是应用程序和第三方的主题。 在创建或分配了对自定义主题的访问权限后,就会在订阅中看到该自定义主题。
合作伙伴主题是一种用于订阅合作伙伴发布的事件的主题。 启用此类集成的功能称为合作伙伴事件。 通过该集成,你将获得合作伙伴主题,其中提供了来自合作伙伴系统的事件。 拥有合作伙伴主题后,可以像其他类型的主题那样创建事件订阅。
事件订阅
订阅告诉事件网格你有兴趣接收主题上的哪些事件。 在创建订阅时,你提供处理事件的终结点。 可以筛选发送到终结点的事件。 可以按事件类型或使用者模式进行筛选。 为仅在有限时间内需要的事件订阅设置一个过期日期,你不需要担心清理这些订阅。
事件处理程序
从事件网格的角度看,事件处理程序是发送事件的位置。 处理程序将执行一些进一步的操作来处理事件。 事件网格支持多个处理程序类型。 可以使用受支持的 Azure 服务或你自己的 webhook 作为处理程序。 根据处理程序的类型,事件网格遵循不同机制,以保证事件的传递。 对于 HTTP webhook 事件处理程序,在处理程序返回状态代码 200 – OK 之前,将重试事件。 对于 Azure 存储队列,将重试事件,直到队列服务成功处理推送到队列的消息。
安全性
事件网格为订阅主题以及向主题发布事件提供安全性。 订阅时,必须对事件网格主题拥有足够的权限。 如果使用推送传递,则事件处理程序是一个 Azure 服务,托管标识用于对事件网格进行身份验证,该托管标识应具有适当的 RBAC 角色。 例如,如果将事件发送到事件中心,则事件订阅中使用的托管标识应是事件中心数据发送者角色的成员。