比较 AWS 和 Azure 中的事件驱动体系结构和消息传送服务
云原生解决方案通常由组件(有时称为微服务)组成,每个组件都实现了所需的部分功能。 若要满足任何单个用户请求,这些组件必须可靠且可伸缩性。 事件驱动和消息传送体系结构提供启用此通信的服务。
在全球服装零售商中,你有两个面向公众的网站。 Amazon Web Services(AWS)中的一个是在合并之前创建的,一个是由你收购的竞争对手开发的,即在 Azure 中。 这两个网站都实现为云原生应用程序,其中包含松散耦合微服务通过消息队列和事件总线进行通信。 你想要从这两个网站创建单个公司网站。 因此,你需要了解如何迁移消息传送服务和事件总线。
在本单元中,你将探索事件驱动和消息传送体系结构,并比较如何在 AWS 和 Azure 中实现它们。
什么是事件驱动和消息传送体系结构?
事件驱动的体系结构:
- 促进事件的生产、检测、消耗和反应。 事件是组件中的状态更改或重大事件。
- 包括发布事件及其特征的事件生成者。
- 让事件使用者侦听和响应事件。
- 使用事件存储来管理事件流。
- 支持实时数据处理和即时响应。
消息传送体系结构:
- 重点介绍组件与消息之间的通信。 消息可以是服务之间传输的数据的任何部分。
- 包括发送消息及其内容的消息生成者。
- 让消息使用者接收和处理消息。
- 使用消息代理维护消息队列,供使用者拾取。
- 支持分离组件(如微服务)之间的可靠通信。
在 AWS 和 Azure 中,事件驱动和消息传送体系结构对于构建可缩放的系统至关重要。 这两个平台都提供与其他组件紧密集成的服务,可实现复杂的事件驱动工作流和无缝事件处理。
但是,AWS 和 Azure 中的体系结构之间存在概念差异。
事件驱动的体系结构
在 AWS 中,EventBridge 和 SNS 主要用于事件分发,而 Lambda 用于处理事件。 在 Azure 中,事件网格 是事件路由的主要服务,而 Azure Functions 可用于处理事件处理。
| 目的 | 天蓝色 | AWS | 评论 |
|---|---|---|---|
| 事件路由 | 事件网格 | Amazon EventBridge | 事件网格是一种完全托管的事件路由服务,它使用发布和订阅模型进行准实时处理。 它使你可以通过将事件从任何源路由到任何目标来生成基于事件的体系结构。 相比之下,EventBridge 也是一种无服务器事件总线服务,它使用数据连接应用程序、集成的软件即服务(SaaS)应用程序和 AWS 服务。 |
| 响应事件 | Azure Functions | Lambda | Azure Functions 是一种无服务器计算服务,可用于按需运行由来自各种源的事件触发的代码。 AWS Lambda 还允许运行无服务器按需代码。 Lambda 与 Azure WebJob 功能重叠,使你可以计划或持续运行后台任务。 |
| 事件处理 | Azure 事件中心 | Amazon Kinesis Streams(亚马逊 Kinesis 数据流) | Azure 事件中心是一个大数据流式处理平台和事件引入服务,每秒能够处理数百万个事件。 |
消息传送体系结构
在 AWS 中,SQS 用于点到点消息传送,而 SNS 提供发布和订阅模型。 在 Azure 中,服务总线 支持队列和发布和订阅消息传送模式,而 队列存储 用于更简单的排队要求。
| 服务 | 天蓝色 | AWS | 评论 |
|---|---|---|---|
| 消息队列 | 队列存储 | SQS (简单队列服务) Amazon MQ | Azure 队列存储是一个简单的队列服务,用于应用程序组件之间的大容量消息传送。 |
| 消息中转站 | 服务总线 | 简单通知服务 (SNS) | Azure 服务总线是一个企业消息中转站,其中包含消息队列和发布-订阅主题。 但是,Azure 服务总线是消息传送服务,不会创建通知。 Amazon MQ 是 Apache ActiveMQ 和 RabbitMQ 的消息代理服务。 Amazon SNS 用于在事件驱动的体系结构中发送通知,通常与 Lambda 一起使用。 |