简介

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

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

这个 8 分半钟的片段摘自 AWS 企业战略总监 Gregor Hohpe 在 AWS re:Invent 2022 大会上的一小时演讲录音。该片段概述已推出的 AWS 应用程序集成服务。

阅读时间

20 分钟

用途

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

级别

新手

上次更新日期

2023 年 5 月 31 日

了解

现代化的主要优势之一是能够转移运维职责,从而让您腾出资源来开展更多增值和创新驱动的活动。

在不同程度的现代化过程中,不同的集成服务对您提出的运维要求不一而足,不论是在 Amazon Elastic Compute Cloud (Amazon EC2) 上托管消息代理(您需要管理扩展、安全配置、预配、修补等),还是无服务器产品/服务(所有底层基础设施均由 AWS 管理)。

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

了解环境中的集成

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

了解您的架构特征

支持各种架构的能力非常重要。我们建议您将 AWS Well-Architected Framework 作为指南,帮助您理解在 AWS 上构建架构时所做的决策。此外,使用 Well-Architected Framework 还可让您了解在云中设计和运行可靠、可扩展、安全、高效且性价比高的系统的架构最佳实践。

使用多种集成服务组合

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

  • 将 Amazon EventBridge 或 Amazon Simple Notification Service (Amazon SNS) 事件路由到 Amazon Simple Queue Service (Amazon SQS) 队列,作为下游消费者的缓冲区。
  • 使用 EventBridge Pipes 直接从流(Kinesis Data Streams 或 Amazon Managed Streaming for Apache Kafka (Amazon MSK))或队列(SQS 或 Amazon MQ)中拉取事件,并将事件发送到 EventBridge 总线以推送给消费者。
  • 将 EventBridge 或 SNS 事件路由到 Kinesis Data Streams 或 Amazon MSK,以便收集和查看分析结果。

定义

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

消息传递或流处理平台

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

示例 1:

假设有一家保险公司会收到不同理赔类型(车险、房屋险或人寿险)的各种理赔消息,这些消息采用不同的业务规则。这可能意味着,消息使用者应具备根据消息中的标头属性将理赔信息路由到不同目的地的功能。

示例 2:

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

市场采用:该平台已被庞大的客户群体广泛采用,足以满足大多数使用场景;经过实践和测试,拥有活跃的支持社区,可以应对可能遇到的任何问题。这是一个低风险的决策,可为开发资源提供充足的培训。

最适合使用场景:这些平台将针对特定行业的使用场景量身定制,例如航空、物流或医疗保健。对于那些有现成模板可供采用的使用场景,它们可能是最佳选择。这些平台很容易上手,但可能缺乏市场采用程度和灵活性。采用这类平台可能需要大量的时间和资源来验证和积累内部专业知识。

现代化:这类平台采用下一代架构构建而成,可解决云规模部署、多租户、容灾和无服务器定价类型等问题。使用这类平台可能需要对工作负载进行一些重构,以实现长期可行性。云原生平台的设计,侧重于使用现代应用程序的良好架构原则。

示例 3:

如果消息传递平台需要被纳入跨多个区域的大型贷款处理工作流,那么消息传递平台也需要支持相同的业务需求。如果业务需要能够在雨天情况下恢复并回滚到以前的状态,那么底层消息传递或流媒体平台也需要具备一定的快照或重放功能,以重新创建系统状态。

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

考虑

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

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

  • 考虑迁移到云,通过使用托管式服务将运维负担转移给 AWS 来降低运维成本。更高级别的抽象使开发人员和运维人员能够专注于各自特有的增值工作,而不是无差别的任务。

  • 考虑在开源技术上实现标准化。开源可以使组织找到合适的技能,并避免一些受限于特定技术的风险。

    在开源生态系统中做出错误的选择可能会导致受限于抽象和自行开发的集成。此外,使不同开源组件协同工作的责任通常由做出选择的组织承担。这可能导致组织花费大量时间维护开源集成。

  • 在选择合适的集成服务时,了解需要在应用程序之间发送的消息的特征非常重要。消息格式、大小、保留时间和优先级等关键特征会影响集成服务的决策。

    有些集成服务更适合基于文本的小型消息,而有些服务则旨在支持文本和二进制等多种格式,并提供更大的消息大小。在某些场景中,除了消息排序外,重放功能的需求也可能是一个重要因素。

    例如,您可以使用 Amazon SNS 和 Amazon SQS 提供的 FIFO 功能实现消息排序。此外,还需要考虑采用基于拉取或推送的架构,例如 EventBridge 或 SNS 异步调用 Lambda 函数。

    基于拉取的架构可以使用 SQS 或 Kinesis Data Streams 等服务,其中消息存储在队列或流中,然后可以被消费系统检索。Amazon MQ 等消息服务提供更大的消息有效负载功能,并支持无限保留期。但是,它们不提供重放功能。

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

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

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

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

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

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

    如果可以选择重构应用程序,您可以利用无服务器服务原生提供的该功能,并与各种 AWS 服务进行丰富集成。

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

选择

现在您已了解评估应用程序集成需求时将使用的标准,接下来就可以选择适合您环境中工作负载的 AWS 服务。

服务类型
使用场景
优化目标
关联服务
关闭

事件是系统中状态的任何变化或更新。该类别中的所有服务都可以在事件驱动架构中使用。

当您需要解耦发布者和订阅者并同时向多个订阅者发送事件时使用。
针对发布者和订阅者之间的异步、松耦合通信进行了优化。事件在消息路由和传递方面提供较高的灵活性,非常适合事件驱动架构,其中事件在启动操作或工作流方面发挥核心作用。
关闭

Amazon EventBridge

Amazon EventBridge 提供用于路由事件的事件总线,以及用于点对点集成的管道。使用它在 AWS、现有系统或 SaaS 应用程序中大规模构建事件驱动应用程序。

关闭

Amazon SNS

Amazon SNS 提供消息传递(发布和订阅)功能,并为此提供可靠的高吞吐量。它支持短信、电子邮件和移动推送通知。

关闭

消息服务支持不同的软件系统和终端设备。此类服务通常在不同的平台上使用不同的编程语言进行通信和信息交换。

当您需要使用发布/订阅消息向多个接收者同时广播消息,或者在组件之间需要可靠的异步通信时,可以使用点对点消息。
针对分布式组件之间高吞吐量、可扩展且可靠的异步发布/订阅和点对点消息传递进行了优化。
关闭

Amazon SNS

Amazon SNS 提供消息传递(发布和订阅)功能,并为此提供可靠的高吞吐量。它支持短信、电子邮件和移动推送通知。

关闭

Amazon SQS

Amazon Simple Queue Service (Amazon SQS) 提供安全、持久且可用的托管队列。它针对为下游使用者持久化和缓冲事件和消息进行了优化。

关闭

Amazon MQ

Amazon MQ 是一种全托管消息代理服务,支持 Apache ActiveMQ 和 RabbitMQ。它旨在简化迁移并实现混合架构。

关闭

流数据是由成千上万个数据源持续生成的数据,这些数据源通常同时以小数据量(KB 级别)发送数据记录。它包括各种各样的数据,例如客户使用您的移动或 Web 应用程序生成的日志文件、电子商务购买、游戏中的玩家活动、来自社交网络、金融交易平台或地理空间服务的信息,以及来自数据中心中互联设备或仪器的遥测数据。

在涉及处理和分析实时流数据的场景中,使用 Amazon Kinesis Data Streams 和 Amazon Managed Streaming for Apache Kafka (MSK) 等流服务。
针对摄取、处理和分析大量实时流数据进行了优化,适用于需要实时分析、实时监控、数据探索以及其他需要处理高速数据流的应用程序。
关闭

Amazon Kinesis Data Streams

Kinesis Data Streams 是一种无服务器流数据服务,可实时收集和处理大量数据记录流。

关闭

Amazon MSK

Amazon MSK 是一种全托管服务,可让您构建并运行使用 Apache Kafka 处理流数据的应用程序。它提供控制面板操作,例如创建、更新和删除集群,并允许您使用 Apache Kafka 数据面板操作,例如生成和使用数据。

关闭

工作流描述的是人们从开始到完成的工作方式。工作流可以表现为清单中的一系列步骤,或者可视化步骤的图表。

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

AWS Step Functions

AWS Step Functions 是一种无服务器编排服务,可让您与 AWS Lambda 函数和其他 AWS 服务集成,以构建关键业务应用程序。使用 Step Functions 图形控制台,您可以将应用程序的工作流视为一系列事件驱动的步骤。

关闭

Amazon Managed Workflows for Apache Airflow

Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 是一种用于 Apache Airflow 的托管编排服务,可用于在云中大规模设置和操作数据管道。Apache Airflow 是一种开源工具,用于以编程方式编写、调度和监控称为工作流的流程和任务序列。

使用

您现在应该清楚地了解每个 AWS 应用程序集成服务的功能,以及哪种服务可能适合您。为了探索如何使用每种可用的 AWS 应用程序集成服务以及了解更多信息,我们提供了一条探索每个服务工作原理的路径。以下章节提供了进阶文档、实践教程和相关资源的链接,帮助您快速上手。

  • Amazon SNS
  • 开始使用 Amazon SNS



    我们将向您展示如何使用 Amazon SNS 控制台管理主题、订阅和消息。

    探索指南 »

    Amazon SNS

    使用 Amazon SNS 和 Amazon SQS 过滤发布到主题的消息

    了解如何使用 Amazon SNS 的消息过滤功能。  


    开始学习教程 »

    Amazon SNS

    Amazon SNS 消息数据保护简介


    这篇博文将介绍什么是消息数据保护及其实现原理。   

     阅读博客文章 »

    Amazon SNS - 故障排除



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


     探索指南 »

    使用 Amazon DynamoDB 和 Amazon SNS 构建回合制游戏

    了解如何使用 Amazon DynamoDB 和 Amazon SNS 构建多人回合制游戏。


     开始学习教程 »

    构建事件驱动型架构


    了解如何使用 Amazon SNS 作为发布服务、Amazon SQS 作为订阅者构建简单的发布/订阅实现方案。

    探索指南 »

  • Amazon SQS
  • Amazon SQS

    Amazon SQS 简介

    Amazon Simple Queue Service (SQS) 的高级概述以及使用松耦合系统的优势。

    探索指南 »

    Amazon SQS

    开始使用 Amazon SQS

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


    探索指南 »

    Amazon SQS

    发送广播事件通知

    了解如何使用 Amazon SNS 和 Amazon SQS 实现广播消息传递场景。


     开始学习教程 »

    Amazon SQS

    编排基于队列的微服务

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


    开始学习教程 »

    Amazon SQS

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

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

    开始学习教程 »

  • Amazon EventBridge
  • 开始使用 Amazon EventBridge

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

    探索指南 »

    Amazon EventBridge

    Amazon EventBridge 入门教程

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


     开始学习教程 »

    Amazon EventBridge

    与其他 AWS 服务集成

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


     开始学习教程 »

    构建事件驱动型架构



    了解事件驱动型设计的基础知识、如何为作业选择合适的 AWS 服务,以及如何在成本和性能方面进行优化。



     开始学习教程 »

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

    了解如何使用 Amazon EventBridge 提供的无服务器事件总线连接多个应用程序(包括 SaaS 应用程序和 AWS 服务)来构建事件驱动应用程序。

    开始学习教程 »

  • Amazon MQ
  • Amazon MQ

    加速消息传递现代化

    我们将向您介绍 Amazon MQ,您可以参与几个实践教程以更好地理解它。


     开始学习教程 »

    Amazon MQ

    创建连接的消息代理

    了解如何设置 Amazon MQ 消息代理并连接 Java 应用程序,而无需重写代码。


     开始学习教程 »

    Amazon MQ

    创建和连接到 RabbitMQ 代理

    了解如何使用 AWS 管理控制台创建 RabbitMQ 代理并连接应用程序。


     开始学习教程 »

    Amazon MQ

    创建和连接到 ActiveMQ 代理

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


     开始学习教程 »

    Amazon MQ

    ActiveMQ 研讨会


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

     开始了解研讨会 »

    Amazon MQ

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

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

    阅读博客文章 »

  • Amazon Kinesis Data Streams
  • Amazon Kinesis Data Streams

    Amazon Kinesis Data Streams 简介


    我们将阐述如何使用 Amazon Kinesis Streams 收集、处理和分析实时流数据以创造有价值的见解。  



     探索指南 »

    Amazon Kinesis Data Streams

    开始使用 Amazon Kinesis Data Streams


    了解 Kinesis Data Streams 数据流的基本原理以及从 Kinesis 数据流放置和获取数据的必要步骤。



     探索指南 »

    Amazon Kinesis Data Streams

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

    我们将对比在主要运维区域发生服务中断、延迟或中断情况下创建高可用性 Kinesis 数据流的不同策略。

     阅读博客文章 »

    Amazon Kinesis Data Streams

    Amazon Kinesis Data Streams 示例教程

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

     开始学习教程 »

    Amazon Kinesis Data Streams

    结合使用 AWS Lambda 和 Amazon Kinesis

    了解如何创建 Lambda 函数以从 Kinesis 流中使用事件。


     开始学习教程 »

    Amazon Kinesis Data Streams

    使用 Amazon Kinesis 进行实时流处理

    探索一系列实验练习,帮助用户在 AWS 上构建流分析应用程序。


     开始学习教程 »

  • Amazon MSK
  • Amazon MSK

    开始使用 Amazon MSK

    本教程将向您展示如何创建 MSK 集群、生成和使用数据以及使用指标监控集群运行状况的示例。



     开始学习教程 »

    Amazon MSK

    开始使用 MSK 无服务器集群

    本教程将向您展示如何创建 MSK 无服务器集群、创建可以访问该集群的客户端机器,并使用客户端在集群上创建主题并将数据写入这些主题的示例。

     开始学习教程 »

    Amazon MSK

    Amazon MSK 实验


    这些实验既可以在个人或企业 AWS 账户上运行,也可以在 AWS 账户团队为使用研讨会工作室的事件预配的账户上运行。



     开始了解实验 »

  • AWS Step Functions
  • Amazon MSK

    开始使用 AWS Step Functions

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


     开始学习教程 »

    Amazon MSK

    Step Functions 简介


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

     开始学习课程 »

    Amazon MSK

    创建“首先响应”任务请求广播模式

    了解如何协调为电子商务公司送货的一组司机。


     开始学习教程 »

    Amazon MSK

    AWS Step Functions 的设计模式


    了解如何在 Step Functions 状态机中实现设计模式,以及使用每种模式的原因。

    开始学习课程 »

    Amazon MSK

    使用 AWS Step Functions 和 Amazon EventBridge Scheduler 调度无服务器工作流

    我们向您展示如何 根据您定义的计划使用 EventBridge Scheduler 调用状态机。

     开始学习教程 »

    Amazon MSK

    AWS Step Functions 研讨会



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

     开始了解研讨会 »

  • Amazon MWAA
  • Amazon MSK

    开始使用 Amazon Managed Workflows for Apache Airflow

    本指南将介绍开始使用 Amazon MWAA 所需的前期准备和所需的 AWS 资源。



     探索指南 »

    Amazon MSK

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

    本教程指导您使用 Amazon Managed Workflows for Apache Airflow 的 aws-mwaa-local-runner 在 GitHub 中构建持续交付 (CD) 管道,以在本地测试您的 Apache Airflow 代码。

     开始学习教程 »

    Amazon MSK

    限制 Amazon MWAA 用户对 DAG 子集的访问

    我们将展示如何限制单个 Amazon MWAA 用户仅查看和交互特定的 DAG 或一组 DAG。



     
    开始学习教程 »

    Amazon MSK

    Amazon MWAA 分析研讨会

    了解如何构建和编排包含上述多项服务的数据和机器学习管道,借此熟悉并深入理解 Airflow 提供的可用于在 AWS 上管理管道/工作流的挂钩和运算符。

    开始了解研讨会 »

探索

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

架构图

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

白皮书

浏览白皮书,帮助您入门并了解有关事件驱动架构的最佳实践。

博客

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

此页内容对您是否有帮助?