您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

使用队列和事件的企业集成

事件网格
服务总线

此参考体系结构集成企业后端系统,使用消息队列和事件将服务分离,以提高可伸缩性和可靠性。 后端系统可能包括软件即服务 (SaaS) 系统、Azure 服务以及企业中现有的 Web 服务。

适用于使用队列和事件的企业集成的参考体系结构

体系结构

此处显示的体系结构在更简单的体系结构上构建,后者显示在基本企业集成中。 该体系结构使用用于协调工作流的逻辑应用和用于创建 API 目录的 API 管理

此版体系结构添加了两个组件,使系统的可靠性和可伸缩性更高:

与对后端服务进行直接的同步调用相比,使用消息代理的异步通信具有许多优势:

  • 通过基于队列的负载均衡模式提供负载均衡,以便处理工作负荷突增的情况。
  • 可靠地跟踪长时间运行的工作流的进度,此类工作流涉及多个步骤或多个应用程序。
  • 有助于分离应用程序。
  • 与现有的基于消息的系统集成。
  • 当后端系统不可用时,允许将工作排队。

有了事件网格,系统中的各种组件就可以在事件发生时做出反应,不必依赖轮询或计划的任务。 与消息队列一样,它有助于分离应用程序和服务。 应用程序或服务可以发布事件,任何相关的订阅方都会获得通知。 可以在不更新发送方的情况下添加新的订阅方。

许多 Azure 服务支持将事件发送到事件网格。 例如,将新文件添加到 Blob 存储时,逻辑应用可以侦听事件。 此模式可启用反应式工作流,即上传某个文件或将消息置于队列中会启动一系列过程。 这些过程可能并行执行,也可能按特定顺序执行。

建议

基本企业集成中描述的建议适用于此体系结构。 以下建议也适用:

服务总线

服务总线有两种传递模式:拉取或推送。 在拉取模型中,接收方会持续轮询新消息。 轮询可能效率不高,尤其是在有许多队列且每个队列都收到一些消息的情况下,或者是在两个消息的时间间隔很长的情况下。 在推送模型中,服务总线会在有新消息时通过事件网格发送事件。 接收方可订阅事件。 触发事件时,接收方可从服务总线拉取下一批消息。

创建逻辑应用来使用服务总线消息时,建议将推送模型与事件网格集成配合使用。 它通常更经济有效,因为逻辑应用不需轮询服务总线。 有关详细信息,请参阅 Azure 服务总线到事件网格的集成概述。 目前,服务总线高级层是事件网格通知所需的。

请使用 PeekLock 来访问一组消息。 使用 PeekLock 时,逻辑应用可以执行步骤来验证每条消息,然后完成或放弃该消息。 此方法可以防范意外的消息丢失。

事件网格

事件网格触发器的触发意味着发生了“至少 1 个”事件。 例如,逻辑应用在获取服务总线消息的事件网格触发器时,应假定可能需要处理多个消息。

可伸缩性注意事项

若要提高可伸缩性,服务总线高级层可以扩展消息传送单元数。 高级层配置可以包含 1 个、2 个或 4 个消息传递单位。 有关缩放服务总线的详细信息,请参阅使用服务总线消息传递改进性能的最佳实践

可用性注意事项

查看每个服务的 SLA:

为了在发生严重的服务中断时实现故障转移,请考虑在服务总线高级层中实施异地灾难恢复。 有关详细信息,请参阅Azure 服务总线异地灾难恢复

DevOps 注意事项

请参阅基本企业集成参考体系结构中 DevOps 注意事项

安全注意事项

若要保护服务总线,请使用共享访问签名 (SAS)。 可以使用 SAS 身份验证向具有特定权限的用户授予对服务总线资源的访问权限。 有关详细信息,请参阅服务总线身份验证和授权

如果需要将服务总线队列公开为 HTTP 终结点(例如,以便发布新消息),请使用 API 管理将此终结点前置,以对其提供保护。 然后,可以适当地使用证书或 OAuth 身份验证来保护终结点。 保护终结点的最简单方法是使用包含 HTTP 请求/响应触发器的逻辑应用作为中介。

事件网格服务通过验证代码保护事件传送。 如果通过逻辑应用来使用事件,则会自动执行验证。 有关详细信息,请参阅事件网格安全性和身份验证

成本注意事项

通常,使用 Azure 定价计算器 来估算成本。 下面是一些其他注意事项。

API 管理

需要对所有运行的 API 管理实例付费。 如果已纵向扩展,但始终不需要该性能级别,请手动进行纵向缩减,或者配置自动缩放

逻辑应用

逻辑应用使用无服务器模型。 根据操作和连接器执行计算费用。 有关详细信息,请参阅 逻辑应用定价

服务总线队列

服务总线队列支持用于传递消息的推送和请求模型。 在请求模型中,每个轮询请求都按操作计量。 即使在30秒的时间内轮询 (默认) ,成本也可能会很高。 除非需要实时传送消息,否则请考虑使用推送模型。

服务总线队列包含在 (基本、标准和高级级别) 的所有层中。 有关详细信息,请参阅Azure 服务总线定价

事件网格

事件网格使用无服务器模型。 根据操作(事件执行)数目计算费用。 操作包括将事件入口到域或主题、高级匹配、交付尝试和管理调用。 使用最多100000个操作是免费的。

有关详细信息,请参阅事件网格定价

有关详细信息,请参阅 Microsoft Azure 架构良好的框架中的“成本”部分。

后续步骤