异步消息收发和事件传递
事件传递是用于在微服务之间实现通信的另一种模式。服务通过队列交换消息进行通信。这种通信方式的一个主要优势是,不需要服务发现,而且服务是松散耦合的。
同步系统是紧密耦合的,这意味着同步下游依赖关系中的问题会直接影响上游调用者。上游调用者的重试操作可以快速扩散和放大问题。
根据协议等特定要求,AWS 提供不同的服务来帮助实施此模式。一种可能的实施方法是结合使用 Amazon Simple Queue Service
这两种服务紧密协作:Amazon SNS 使应用程序能够通过推送机制向多个订阅者发送消息。通过结合使用 Amazon SNS 和 Amazon SQS,一条消息可以传递给多个使用者。下图演示了 Amazon SNS 和 Amazon SQS 的集成。
![](images/image8.png)
AWS 上的消息总线模式
当您针对 SNS 主题订阅 Amazon SQS 队列时,您可以将消息发布到该主题,同时 Amazon SNS 将消息发送到订阅的 Amazon SQS 队列。该消息包含发布到该主题的标题和消息,以及 JSON 格式的元数据信息。
Amazon EventBridge 是构建事件驱动型架构的另一个选项,该架构具有大规模跨越内部应用程序、第三方 SaaS 应用程序和 AWS 服务的事件源。EventBridge 是一项完全托管式事件总线服务,它接收来自不同来源的事件,根据路由规则识别目标,然后向该目标(包括 AWS Lambda、Amazon SNS 和 Amazon Kinesis Streams 等)提供近乎实时的数据。入站事件也可以在传送之前通过输入转换器进行自定义。
为了显著加快开发事件驱动型应用程序的速度,EventBridge 架构注册表收集和组织架构,包括 AWS 服务生成的所有事件的架构。客户还可以定义自定义架构或使用推断架构选项来自动发现架构。然而,总的来说,所有这些功能的一个潜在权衡是 EventBridge 传输的延迟值相对较高。此外,EventBridge 的原定设置吞吐量和配额可能需要根据使用场景,通过支持请求来要求增加。
另一种实施策略基于 Amazon MQ
Amazon MQ 负责管理和维护 ActiveMQ,这是一个常见的开源消息代理。自动预置底层基础设施,以实现高可用性和消息持久性,从而支持应用程序的可靠性。