选择 AWS 应用程序集成服务 - 选择 AWS 应用程序集成服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择 AWS 应用程序集成服务

迈出第一步

目的

帮助确定哪些 AWS 应用程序集成服务最适合您的工作负载。

上次更新

2025 年 4 月 16 日

承保服务

简介

应用程序集成是一套服务,可实现微服务、分布式系统和无服务器应用程序中分离的组件之间的通信。Amazon Web Services (AWS) 提供六种以上的应用程序集成服务,以支持在云中运行的各种工作负载。

选择最适合您的组织和工作负载的集成服务可能会变得很困难。本决策指南将帮助您提出正确的问题以发现您的需求,并就如何评估和选择适合您的工作负载的集成服务提供明确的指导。

这段 8½ 分钟的片段来自企业战略 AWS 总监格雷戈尔·霍普在 re: Invent 2022 上的一小时演讲录音。 AWS 它概述了可用的 AWS 应用程序集成服务。

明白

现代化的主要好处之一是能够转移运营责任,使您可以腾出资源来开展更多以增值和创新为主导的活动。

不同现代化级别都有一系列责任共担选项,从在 Amazon Elastic Compute Cloud (Amazon EC2) 上托管消息代理(由您管理扩展、安全配置、配置、修补等)到管理所有底层基础设施的无服务器产品。

该图显示了 AWS 应用程序集成服务之间的运营责任。

在您开始探索和了解您的标准、环境以及所 AWS 提供的集成服务套件时,我们建议您查看一些最佳实践。无论您选择哪种服务(或服务套件),这些最佳实践都适用。

了解您的环境中的集成

一些组织在维护开源集成上花费的时间通常比他们想要的要多。我们建议您在进行这些投资时考虑社区来源、企业或基金会的 and/or 支持。对这些项目的投资不仅是财务投资,也是对知识资本和潜在的技术债务的投资,因为这些组成部分和相关的集成通常需要更新。如需了解更多信息,请参阅AWS 开源博客

了解您的架构特征

支持各种架构的能力非常重要。我们建议您使用 Well-Ar AWS chitected Framework 作为指南,以帮助您了解在构建架构时做出的决策。 AWS此外,使用 Well-Architected Framework 可以让你学习架构最佳实践,以便在云端设计和运行可靠、可扩展、安全、高效且具有成本效益的系统。

使用集成服务的组合

如果您使用的是专门构建的服务,则服务组合可能最适合您的用例。以下列出了 AWS 客户使用组合服务的几种常见方式。

  • 将亚马逊 EventBridge 或亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 事件路由到亚马逊简单队列服务 (Amazon SQS) 队列,作为下游消费者的缓冲区。

  • 使用 Pipes 直接从流(亚马逊 Kinesis Data Streams 或 Apache Kafka 的亚马逊托管流媒体(亚马逊 MSK))或队列(亚马逊 SQS 或亚马逊 EventBridge MQ)中提取事件, EventBridge 然后将事件发送到公共汽车上推送给消费者。

  • 将 EventBridge 或 Amazon SNS 事件路由到 Kinesis Data Streams 或 Amazon MSK,用于收集和查看分析。

定义

一旦您对自己的标准、环境、战略方向和可用服务(包括部署托管和托管模式)有了更清晰的了解,就需要确定自己的集成需求。如果您要迁移到现有的集成平台或消息代理,您可能已经知道自己的某些要求。但是,如果您迁移到云环境,则需要确定这些要求将如何变化(如果有的话)。

消息或流媒体平台

这些平台有望实现一定的业务功能。在考虑需要哪些功能时,请使用以下示例用例。

示例 1:

以一家保险公司为例,它以不同的业务规则接收不同的索赔类型(auto、房屋或人寿保险)作为报文。这可能意味着消息使用者应该能够根据消息中的标头属性将声明路由到不同的目的地。

示例 2:

以航空公司为例,航班状态更新需要使用高级消息队列协议 (AMQP) 等协议通知所有连接的系统,例如行李或登机口操作。功能和业务用例原语的最大问题是,什么才是最适合的消息传递平台。我们有多种选择,可以根据用例确定平台的适用性。

  • 市场采用:该平台已被庞大的客户群广泛采用,非常适合大多数用例。它在充满活力的支持社区中进行了尝试和测试,以解决可能遇到的任何问题。这是一个低风险的决定,需要为开发资源提供足够的培训。

  • 最适合用例:这些平台将针对航空公司、物流或医疗保健等特定行业用例量身定制。它们可能最适合那些有现成模板可供采用的用例。这些平台可能很容易上手,但可能缺乏市场采用水平和灵活性。采用这种类型的平台可能需要大量的时间和资源来验证和建立内部专业知识。

  • 现代:这些平台采用下一代架构构建,可解决云规模部署、多租户、灾难恢复和无服务器类型的定价问题。使用这种类型的平台可能需要对工作负载进行一些重构才能实现长期可行性。它使用云原生平台,专注于使用现代应用程序的架构良好的原理。

示例 3:

如果消息传递平台是需要多区域的更大的贷款处理工作流程的一部分,则消息传递平台还需要支持相同的业务需求。如果企业需要能够在下雨天恢复并回滚到以前的状态,那么底层的消息或流媒体平台还需要具备一些快照或重播功能来重现系统的状态。

您选择的集成平台应促进贷款申请的异步处理,或者充当多步骤媒体处理工作流程的存储和转发渠道。业务流程的关键性将决定消息或流媒体平台所需的功能。

考虑一下

在考虑云端的主要应用程序集成架构时,有不同的方法可以确定每个集成点的功能要求。

以下是选择应用程序集成服务时需要考虑的一些标准。

Managed service and operation overhead

考虑迁移到云端,通过对托管服务进行标准化来降低运营成本,从而将运营负担转移到 AWS。更高的抽象层次使开发人员和运营商能够专注于自己独特的增值活动,而不是无差别的任务。

Open source

考虑开源技术的标准化。开源可以使组织找到合适的技能,并避免一些被锁定的风险。

在开源生态系统中做出错误的选择可能会导致被抽象和本土集成所困扰。此外,让不同的开源组件协同工作的责任通常在于组织做出选择。这可能导致组织花费大量时间维护开源集成。

Workload characteristics

在选择正确的集成服务时,了解需要在应用程序之间发送的消息的特征非常重要。消息格式、大小、保留期和优先级等关键特征可以推动集成服务的决策。

有些集成服务更适合小型文本消息,而有些集成服务则旨在支持多种格式,例如文本和二进制,并提供更大的邮件大小。在某些情况下,除了消息排序外,还需要具有重播功能也可能是一个重要因素。

例如,可以使用亚马逊 SNS 和 Amazon SQS 提供的先进先出功能来实现消息排序。还需要考虑采用基于拉取或推送的架构,例如 EventBridge 或者 Amazon SNS 异步调用 Lambda 函数。

基于拉取的架构可以使用诸如 Amazon SQS 或 Kinesis Data Streams 之类的服务,其中消息存储在队列或流中,然后可以由消费系统检索。像 Amazon MQ 这样的消息服务提供了围绕更大消息负载的功能,并且保留期不受限制。但是,它们不提供重播功能。

Rapid iteration and feature velocity

如果您的主要重点是快速构建和迭代,那么无服务器服务可能会提供最佳价值。无服务器服务使您无需管理基础设施即可构建应用程序。它们提供托管功能和集成,以减少编写锅炉板代码所花费的时间。

在测试新想法时,无服务器的另一个好处是,这些服务提供基于使用量的定价。您的代码仅在调用服务时运行,因此实验不需要前期投资。

Application portability

许多应用程序使用某些协议(例如高级消息队列协议 (AMQP) 或 MQ 遥测传输 (MQTT))来连接消息服务。或者,它们有一些使用特定消息传递协议的库依赖关系。此类库或框架的示例包括 Spring Boot、Celery 或 MassTransit。

出于不同的原因,您可能希望保留此类应用程序。在这些情况下,对集成服务的选择还取决于对应用程序的可移植性所需协议的支持。

Automation portability

你可能需要一个与你的基础架构和部署工具兼容的服务,并运行与你在本地托管的集成系统相同的集成系统(例如 Apache ActiveMQ、RabbitMQ 和 Apache Kafka)。

托管开源服务(例如 Amazon MQ 和 Amazon MSK)提供了云的优势,同时与许多用于本地部署的常用部署工具兼容。

如果可以选择重构应用程序,则可以从使用无服务器服务以本机方式提供此功能以及与各种服务的丰富集成中受益。 AWS

Organization size and skills

在决定合适的集成服务时,贵组织的技能是一个主要因素。如果您的团队熟悉自我管理产品并且它可以满足您的需求,那么拥有相同的托管服务是影响最小的途径。这样做可以帮助您应用服务的最佳实践,并专注于增值活动。

选择

既然您已经知道了评估应用程序集成需求的标准,那么您就可以选择适合您环境中的工作负载的 AWS 服务了。

服务类型 你什么时候会用它? 它针对什么进行了优化? 关联服务

容量

当您需要分离发布者和订阅者并同时向多个订阅者发送事件时使用。

针对发布者和订阅者之间的异步、松散耦合通信进行了优化。事件为消息路由和传递提供了灵活性,非常适合事件驱动的架构,在这种架构中,事件在启动操作或工作流程中起着核心作用。

Amazon EventBridge

Amazon SNS

消息收发

当您需要 pub/sub 发送消息以同时向多个收件人广播消息,或者需要在组件之间进行可靠的异步通信时使用 point-to-point消息传送。

针对分布式组件之间的高吞吐量、可扩展和可靠的异步 pub/sub 和 point-to-point消息传递进行了优化。

Amazon SNS

Amazon SQS

Amazon MQ

流式传输

在涉及处理和处理实时流数据的场景中,使用 Amazon Kinesis Data Streams 和适用于 Apache Kafka 的亚马逊托管流媒体 (MSK) 等流媒体服务。

针对需要实时分析、实时监控、数据探索和其他需要处理高速数据流的应用程序的用例提取、处理和分析大量实时流数据进行了优化。

Amazon Kinesis Data Streams

Amazon MSK

工作流

当您需要以有条理且可扩展的方式设计、协调和管理工作流程或任务序列时使用。

针对业务流程管理、应用程序编排、数据管道自动化和微服务协调等用例进行了优化。工作流抽象了底层基础设施的复杂性,使您可以专注于有效地设计和管理工作流程。它们能够处理依赖关系和排序,允许并行和条件分支,同时提供容错、错误处理和重试功能,以确保可靠的工作流程执行。

AWS Step Functions

亚马逊 MWAA

计划

当您需要自动执行数据处理、备份或系统运行状况检查等例行任务时,请使用计划功能。任务通常需要按特定的时间或间隔运行,例如每晚、每小时或每分钟。

内置重试逻辑,针对基于时间的可靠任务进行了优化。适用于需要精确调度和与各种 AWS 服务集成的工作流程。

Amazon EventBridge

使用

现在,您应该清楚地了解每种 AWS 应用程序集成服务的用途,以及哪一种可能适合您。为了探索如何使用每种可用的 AWS 应用程序集成服务并了解有关这些服务的更多信息,我们提供了探索每种服务如何工作的途径。以下部分提供了指向深入文档、动手教程和资源的链接,以帮助您入门。

Amazon SNS
  • 使用亚马逊 SNS 和 Amazon SQS 筛选发布到主题的消息

    了解如何使用 Amazon SNS 的邮件筛选功能。

    开始阅读本教程

  • 亚马逊 SNS-故障排除

    了解如何查看配置信息、监控流程和收集有关 Amazon SNS 的诊断数据。

    浏览指南

  • 使用亚马逊 DynamoDB 和亚马逊 SNS 制作回合制游戏

    学习如何使用亚马逊 DynamoDB 和亚马逊 SNS 制作多人回合制游戏。

    开始阅读本教程

  • 构建事件驱动的架构

    学习如何使用 Amazon SNS 作为我们的发布服务,将 Amazon SQS 作为订阅者,在简单 pub/sub 实施的基础上进行构建。

    浏览指南

  • 使用 Amazon SNS FIFO 存档和重播消息

    了解如何存档和重播发布到 Amazon SNS FIFO 的消息,这在故障恢复和状态复制场景中非常有用。

    阅读博客文章

Amazon SQS
  • Getting started with Amazon SQS

    本指南向您介绍如何使用 Amazon SQS 控制台管理队列和消息。

    浏览指南

  • 发送 Fanout 活动通知

    了解如何使用 Amazon SNS 和 Amazon SQS 实现分组消息场景。

    开始阅读本教程

  • 编排基于队列的微服务

    学习如何设计和运行用于编排基于消息队列的微服务的无服务器工作流程。

    开始阅读本教程

  • 在分布式应用程序之间发送消息

    使用 Amazon SQS 控制台创建和配置消息队列、发送消息、接收和删除该消息,然后删除队列。

    开始阅读本教程

Amazon EventBridge
  • 开始使用亚马逊 EventBridge

    的基础 EventBridge 是创建将事件路由到目标的规则。在本指南中,您将创建一条基本规则。

    浏览指南

  • 亚马逊 EventBridge 入门教程

    这些教程将帮助您探索的功能 EventBridge 以及如何使用它们。

    开始使用教程

  • 与其他人集成 AWS 服务

    以下教程向您展示如何 EventBridge 与其他教程集成 AWS 服务。

    开始使用教程

  • 构建事件驱动架构

    学习事件驱动型设计的基础知识、如何 AWS 服务 为工作选择合适的设计以及如何针对成本和性能进行优化。

    开始阅读本教程

  • 使用 Amazon 构建事件驱动型应用程序 EventBridge

    学习如何通过连接多个应用程序(包括 SaaS 应用程序)以及 AWS 服务使用 Amazon 提供的无服务器事件总线来构建事件驱动型应用程序。 EventBridge

    开始阅读本教程

  • 适用于亚马逊的 Kafka 连接器 EventBridge

    此连接器允许您将记录从一个或多个 Kafka 主题转换为事件,并将这些事件发送到您选择的事件总线。

    浏览指南

  • 为 Amazon EventBridge 事件总线引入跨账户目标

    了解如何使用事件总线将事件直接发送到其他目标中的目标 AWS 账户,例如 Amazon SQS、Amazon SNS 和。 AWS Lambda

    阅读博客文章

Amazon MQ
  • 创建连接的消息代理

    了解如何在不重写代码的情况下设置 Amazon MQ 消息代理和连接 Java 应用程序。

    开始阅读本教程

  • 迁移到云端的消息代理

    亚马逊 MQ 可以轻松迁移到云中的消息代理,例如 Apache ActiveMQ 和 RabbitMQ。

    阅读指南

  • 创建并连接到 RabbitMQ 代理

    了解如何使用创建 RabbitMQ 代理并将您的应用程序附加到该代理上。 AWS 管理控制台

    开始阅读本教程

  • RabbitMQ 工作坊

    该研讨会汇集了一系列实验室,涵盖了使用 RabbitMQ 进行消息传递的不同方面和模式。

    开始参加研讨会

  • 在 Amazon MQ 中引入 RabbitMQ 的法定人数队列

    了解在 RabbitMQ 中使用法定队列如何提供更高的可用性和数据安全性。

    阅读博客文章

  • 创建并连接 ActiveMQ 代理

    了解如何使用创建基本经纪商。 AWS 管理控制台

    开始阅读本教程

  • ActiveMQ 研讨会

    探索消息传递概念,例如队列、Amazon MQ 的主题和功能,例如故障转移、代理网络。

    开始参加研讨会

  • 使用无服务器部署并发布到 Amazon MQ 代理 AWS

    我们将引导您使用 AWS SAM 一步部署无服务器后端和 Amazon MQ 代理。

    阅读博客文章

  • 使用 Maven 2 基准测试衡量 Amazon MQ 的吞吐量以及 AWS CDK

    了解如何使用 ActiveMQ Classic Maven 性能测试插件评估亚马逊 MQ 的吞吐量。

    阅读博客文章

Amazon Kinesis Data Streams
  • 亚马逊 Kinesis Data Streams 入门

    学习 Kinesis Data Streams 数据流的基本原理以及从 Kinesis 数据流中放入和获取数据所需的步骤。

    浏览指南

  • 使用 Amazon Kinesis Data Streams 构建高可用性流

    我们比较和对比了在主要运营区域出现服务中断、延迟或中断的情况下创建高度可用的 Kinesis 数据流的不同策略。

    阅读博客文章

  • 亚马逊 Kinesis Data Streams 的示例教程

    这些教程旨在进一步帮助您理解 Amazon Kinesis Data Streams 的概念和功能。

    开始使用教程

  • AWS Lambda 与亚马逊 Kinesis 搭配使用

    学习如何创建 Lambda 函数来使用 Kinesis 流中的事件。

    开始阅读本教程

  • 使用 Amazon Kinesis 进行实时直播

    探索一系列实验室练习,这些练习可帮助用户在其上构建流媒体分析应用程序 AWS。

    开始使用教程

Amazon MSK
  • 开始使用 Amazon MSK

    本教程举例说明如何执行以下操作:创建 MSK 集群、生成和使用数据以及使用指标来监控集群的运行状况。

    开始阅读本教程

  • 开始使用 MSK 无服务器集群

    本教程向您展示了一个示例,说明如何创建 MSK Serverless 集群,创建可以访问该集群的客户端,以及使用客户端在集群上创建主题并向这些主题写入数据。

    开始阅读本教程

  • 亚马逊 MSK 实验室

    这些实验可以在个人 AWS 账户 或公司账户上运行,也可以由 AWS 客户团队为使用研讨会工作室的活动配置的账户运行。

    开始使用实验室

  • 引入适用于 Amazon MSK 的 Express 代理,为您的 Kafka 集群提供高吞吐量和更快的扩展

    了解 Express 代理如何为您的 Kafka 工作负载降低成本、提供更高的弹性和更低的运营开销。

    阅读博客文章

AWS Step Functions
  • 入门 AWS Step Functions

    这些教程将引导您创建处理信用卡申请的基本工作流程。

    开始使用教程

  • Step Functions 简介

    本课程介绍了 Step Functions 的关键组件,以帮助您开始管理应用程序中的工作流程。

    开始学习课程

  • 大规模数据处理 AWS Step Functions

    了解如何使用 Step Functions 构建大规模数据处理应用程序。

    从研讨会开始吧

  • 的设计模式 AWS Step Functions

    了解如何在 Step Functions 状态机中实现设计模式以及为什么要使用每种模式。

    开始学习课程

  • 使用 AWS Step Functions 和 Amazon EventBridge 计划程序安排无服务器工作流程

    我们将向您展示如何根据您定义的调 EventBridge 度使用调度器调用状态机。

    开始阅读本教程

  • AWS Step Functions 工作坊

    AWS Step Functions 通过一系列交互式模块学习如何使用的主要功能。

    从研讨会开始吧

  • 通过 VPC Lattice 和 Step Functi PrivateLink ons 在 VPC 和账户边界之间安全共享 AWS 资源 EventBridge

    了解如何在 Amazon VPC 和 AWS 账户 边界之间共享 AWS 资源,例如 EC2 实例和 Amazon EKS 容器服务 AWS Step Functions。

    阅读博客文章

  • 使用变量和 JSONata输入来简化开发者体验 AWS Step Functions

    使用变量以及 JSONata开源查询和转换语言进行探索,以简化各州之间的数据共享并降低数据操作的复杂性。

    阅读博客文章

Amazon MWAA
  • 开始使用 Amazon Managed Workflows for Apache Airflow

    本指南描述了开始使用 Amazon MWAA 所需的先决条件和所需 AWS 资源。

    浏览指南

  • 在 CD 管道aws-mwaa-local-runner中配置

    本教程将指导您完成 GitHub 使用适用于 Apache Airflow 的亚马逊托管工作流程在本地测试 Apache Airflow 代码时构建持续交付 (CD) 管道aws-mwaa-local-runner的过程。

    开始阅读本教程

  • 限制 Amazon MWAA 用户访问其中的一个子集 DAGs

    我们将展示如何限制个人 Amazon MWAA 用户只能查看特定的 DAG 或一组并与之交互。 DAGs

    开始阅读本教程

  • 亚马逊 MWAA 分析研讨会

    学习构建和编排包含上述许多服务的数据和机器学习管道,这样您就可以熟悉并更好地了解作为 Airflow 一部分的挂钩和运算符,以管理您的业务。 pipelines/workflows AWS

    从研讨会开始吧

Explore

确定哪种方法最适合您的环境的工作负载后,我们建议您查看这些资源以帮助您开始实施您的方法。您可以在上一节中找到特定于服务的资源,在下一节中可以找到一般的事件驱动架构资源。

  • 架构图

    浏览参考架构图,帮助您创建高度可用、安全、灵活且具有成本效益的架构。

    浏览架构图

  • 白皮书

    浏览白皮书以帮助您入门,并学习围绕事件驱动架构的最佳实践。

    浏览白皮书

  • 博客

    浏览博客,帮助您及时了解最新技术,并实现应用程序现代化。

    浏览博客