你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 消息传递服务之间进行选择 - 事件网格、事件中心和服务总线
Azure 提供三种协助在整个解决方案中传递事件或消息的服务。 这些服务包括:Azure 事件网格、Azure 事件中心、Azure 服务总线。
虽然它们有一些相似之处,但是每种服务都旨在针对特定的场景。 本文介绍这些服务之间的区别,并帮助你选择最适合你应用程序的服务。 在许多情况下,消息传递服务是互补的,可以一同使用。
事件与消息
传递事件的服务与传递消息的服务之间有一个重要区别。
事件
事件是条件或状态更改的轻量通知。 事件发布者对于如何处理事件没有期望。 事件使用者决定要对通知执行的操作。 事件可以是离散单元或一系列的一部分。
离散事件报告状态中的更改且可操作。 若要执行下一步,使用者只需知道发生了问题。 事件数据包含关于所发生事件的信息,但不包含触发事件的数据。 例如,事件会通知使用者文件已创建。 它可能包含文件的常规信息,但不包含文件本身。 离散事件非常适合于需要缩放的无服务器解决方案。
一系列事件报告情况,并且可分析。 事件按时间排序并彼此相关。 使用者需要排序的一系列事件以分析发生的情况。
Message
消息是由将使用的服务生成或存储在其他位置的原始数据。 消息包含触发消息管道的数据。 消息发布者对于使用者如何处理消息有期望。 双方之间存在协定。 例如,发布者发送一条包含原始数据的消息,并期望使用者基于该数据创建文件且在工作完成后发送响应。
现在,让我们快速回顾一下什么是 Azure 事件网格、Azure 事件中心和 Azure 服务总线。
Azure 事件网格
Azure 事件网格是一个高度可缩放、完全托管的发布-订阅消息分发服务,它使用消息队列遥测传输 (MQTT) 和 HTTP 协议提供灵活的消息使用模式。 借助 Azure 事件网格,可以使用设备数据生成数据管道,集成应用程序,以及生成事件驱动的无服务器体系结构。
该服务提供支持事件驱动编程和反应编程的事件主干。 它使用发布-订阅模式。 发布服务器发出事件,但不知道如何处理事件。 订阅服务器决定需要处理的事件。
事件网格与其他 Azure 服务深度集成,并可与第三方服务集成。 它简化事件消耗,并通过消除不断的轮询需求降低成本。 事件网格高效可靠地路由来自 Azure 和非 Azure 资源的事件。 它将事件分布到注册的订阅服务器终结点。 事件消息包含对服务和应用程序中的更改做出响应所需的信息。
其具有以下特征:
- 动态可缩放
- 低成本
- 无服务器
- 至少传递一次事件
提供两个版本的事件网格:Azure 事件网格,这是 Azure 上完全托管的 PaaS 服务,以及具有 Azure Arc 的 Kubernetes 上的事件网格,它使你可以在 Kubernetes 群集上使用事件网格,无论它部署在本地还是云端。 有关详细信息,请参阅 Azure 事件网格概述和具有 Azure Arc 的 Kubernetes 上的事件网格概述。
Azure 事件中心
Azure 事件中心是大数据流式处理平台和事件引入服务。 它可以每秒接收和处理数百万个事件。 它促进遥测数据和事件流数据的捕获、保留和重播。 数据可能来自多个并发源。 事件中心允许提供遥测数据和事件数据给多种流式处理基础结构和分析服务。 它作为数据流或捆绑事件批提供。 此服务提供一种可实现快速数据检索以进行实时处理及重复重播所存储原始数据的解决方案。 可以将流数据捕获到一个文件中以进行处理和分析。
其具有以下特征:
- 低延迟
- 可以每秒接收和处理数百万个事件
- 至少传递一次事件
有关详细信息,请参阅事件中心概述。
Azure 服务总线
服务总线是一个完全托管的企业消息代理,其中包含消息队列和发布订阅主题。 该服务适用于企业应用程序,这些应用程序需要事务、排序、重复检测和即时一致性。 服务总线使得云本机应用程序能够为业务进程提供可靠的状态转换管理。 处理不能丢失或复制的高价值消息时,请使用 Azure 服务总线。 该服务还利于跨混合云解决方案的高度安全通信,并且可以将现有本地系统连接到云解决方案。
服务总线是一个中转消息传送系统。 它将消息存储在“中转站”(例如队列)中,直到使用方准备好接收这些消息。 其具有以下特征:
- 需要轮询的可靠异步消息传递(企业消息传递作为服务)。 如果使用服务总线且需要在无需轮询队列的情况下接收消息,则可以使用服务总线支持的基于 TCP 的协议,通过长轮询接收操作来实现此目的。
- 高级消息传递功能,例如,先进先出 (FIFO)、批处理/会话、事务、死信、时态控制、路由和筛选以及重复检测
- 至少传递一次消息
- 可选消息按序送达
有关详细信息,请参阅服务总线概述。
服务对比
下表比较了三个服务:事件网格、事件中心和服务总线。
服务 | 用途 | 类型 | 何时使用 |
---|---|---|---|
事件网格 | 反应编程 | 事件分发(离散事件) | 对状态更改做出响应 |
事件中心 | 大数据管道 | 事件流式处理(系列) | 遥测数据和分布式数据流式处理 |
服务总线 | 高价值企业消息传递 | Message | 订单处理和财务交易 |
同时使用多种服务
在某些情况下,可同时使用多种服务满足不同的角色。 例如,电子商务网站可以使用服务总线处理订单,使用事件中心捕获站点遥测数据,使用事件网格响应事件(例如商品已发货)。
在其他情况下,可将它们链接在一起以形成事件和数据管道。 使用事件网格可响应其他服务中的事件。 有关结合使用事件网格和事件中心将数据迁移到 Azure Synapse Analytics 的示例,请参阅将大数据流式传输到 Azure Synapse Analytics。 下图显示流式处理数据的工作流。
相关内容
请参阅以下文章:
- Azure 中的异步消息传送选项
- Events, Data Points, and Messages - Choosing the right Azure messaging service for your data(事件、数据点和消息 - 为数据选择合适的 Azure 消息传递服务)。