使用Amazon ECS和Fargate构建事件驱动架构
关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Amazon ECS with Amazon Fargate, Event Driven Architecture, Integration Patterns, Amazon Ecs, Amazon Fargate, Microservice Orchestration]
导读
事件驱动架构(EDA)使组织能够构建高度灵活和弹性的系统,客户正在利用无服务器容器来运行EDA工作负载,因为它易于使用、可扩展性强,并且与亚马逊云科技无服务器服务深度集成。本次会话探讨了在Amazon ECS上使用Amazon Fargate实施EDA的实际方面,重点关注在容器化环境中使用Amazon Step Functions、Amazon SQS和Amazon EventBridge消费事件的模式。了解如何构建可扩展、容错和事件驱动的解决方案,以适应不断变化的业务需求。
演讲精华
以下是小编为您整理的本次演讲的精华。
在现代软件开发领域,事件驱动架构(EDA)的概念获得了广泛关注,使得创建可扩展、解耦和有弹性的系统成为可能。这种架构范式的核心是事件的概念——封装在JSON对象中的信号,代表系统状态的变化。这些事件是不可变的,形成了架构中生产者和消费者组件之间的契约。
EDA的基本原理优雅而简单:“发生了某些事情,我们做出反应。”这种响应性使应用程序解耦成为可能,因为生产者发出事件时不需要明确知道消费者。与传统架构不同,传统架构中生产者必须直接通知每个消费者,EDA促进了更加松散耦合的方法,提高了灵活性和可扩展性。
为了促进事件驱动架构中组件的集成,出现了各种模式。其中一种模式是事件路由器,例如Amazon EventBridge和Amazon SNS等服务。这些服务根据预定义的规则和过滤器将事件路由到多个消费者,实现高效的事件分发和处理。正如演示文稿所述,Amazon SNS支持“近乎无限数量的每秒消息数”,并且可以处理多达1250万个订阅,展现了其可扩展性和吞吐量能力。
另一种模式是事件存储,由Amazon SQS和Amazon MQ等服务体现。这些服务存储多个事件,允许消费者独立处理它们,从而避免重复并确保可靠的消息传递。值得注意的是,Amazon SQS被描述为“完全托管的消息队列”,可以“几乎无限扩展”,并提供“简单易用的API”,支持FIFO(先进先出)排序。
另一方面,事件流促进了向所有消费者流式传输事件,过滤发生在消费者层面。Amazon Kinesis和Amazon MSK等服务在这一领域表现出色,提供高吞吐量的事件流式传输能力。特别是,Amazon Kinesis Data Streams被强调具有“每秒千兆位流式传输”的能力,并与其他亚马逊云科技服务内置集成。
在深入探讨EDA的细节时,演讲者介绍了Amazon Fargate,这是一种无服务器计算引擎,可以执行容器而无需管理底层实例的开销。Fargate适合事件驱动架构,原因在于其固有的可扩展性、对微服务的支持、与基于事件的服务的本地集成,以及利用现货实例进行成本优化的能力。值得注意的是,Fargate允许开发人员使用仅0.25个vCPU和512兆内存构建微服务,有助于创建专门构建的容器化服务。
演讲者随后探讨了在事件驱动环境中利用Fargate的各种模式。其中一种模式涉及使用独立任务,在这种模式下,一次性任务或计划作业由EventBridge或Amazon Step Functions等服务触发,按需调用Fargate任务。当Amazon Lambda不合适时,这种方法特别有用,因为Fargate任务可以在大规模处理较长运行的工作负载。演讲者强调了他们去年构建的一个项目,在该项目中,他们使用无服务器架构和Fargate任务处理视频,展示了这种模式在大对象处理和计划处理方面的强大功能。
对于需要持续运行的应用程序,长期运行服务模式就派上了用场。在这种方法中,应用程序部署为Fargate服务,并提供多个任务实例来处理波动的流量需求。这些服务的自我修复特性确保了失败的任务会自动替换,从而提高了可靠性和弹性。
演讲者还讨论了基于推送的模式,强调使用EventBridge向公共或私有API发送事件。这种方法利用了速率控制、重试和死信队列等功能,确保可靠的事件传递和处理。演讲者强调了最近推出的私有API集成,使事件驱动架构能够跨域、账户,甚至跨本地系统。值得注意的是,EventBridge的API Destination功能支持多种授权选项,包括API密钥、基本身份验证和OAuth,凭证安全地存储在Amazon Secrets Manager中。演讲者提供了一个示例,使用API Destination向公共API(如Zendesk、Stripe或Twilio)或自定义构建的公共API发送事件通知,展示了这种模式的多功能性。
另一方面,基于拉取的模式侧重于从Amazon SQS等服务处理消息。在这种情况下,Fargate任务充当消费者,根据队列长度或“每个任务的积压”等自定义指标动态扩展。这种方法确保处理能力与消息流入的步调一致,优化资源利用并最小化延迟。演讲者强调了使用SQS中的预定义指标(如“可见消息的近似数量”)来构建仅需几行代码的扩展策略的能力。他们还提供了一个咖啡店场景的示例,在该场景中,增加更多“咖啡师”(Fargate任务实例)可以加快处理客户订单(队列中的消息),说明了这种模式的可扩展性和灵活性。
演讲者还深入探讨了编排模式,利用Amazon Step Functions来协调和管理Fargate任务的执行。异步、同步和回调模式都被探讨,支持从一次性任务到需要数据交换和协调的各种用例。Step Functions描述和等待ECS任务完成的能力,以及使用任务令牌的回调模式,被强调为编排容器化工作负载的强大机制。
此外,演讲者介绍了Step Functions Activity的概念,这是一种强大的资源,有助于实现与消费者松散耦合的架构。通过向Activity发送事件,Step Functions可以将事件处理逻辑与工作流本身解耦,从而实现可扩展和有弹性的事件处理管道。Activity能够存储长达一年的消息,比SQS的14天保留期更长,被提出作为低扩展消费者或本地环境的一个有吸引力的特性。演讲者提供了一个示例,使用Step Functions Activity来处理来自Amazon S3等服务的事件突发,在这种情况下,为每个事件调用run task API可能会迅速超出API限制,展示了这种模式在处理高流量或不可预测流量时的实用性。
在整个演讲过程中,演讲者强调了在构建事件驱动解决方案之前理解EDA原理的重要性。他们提供了有价值的资源,如精心策划的会话列表和学习材料,以帮助开发人员掌握这种架构范式。
总之,亚马逊云科技 re:Invent 2024上关于“使用Amazon ECS和Fargate构建事件驱动架构”的演讲,全面探讨了事件驱动架构原理、集成模式,以及Amazon Fargate在实现可扩展、解耦和事件驱动应用程序中的关键作用。通过利用EDA的力量和Fargate的无服务器计算能力,开发人员可以创建健壮、有弹性和高度可扩展的系统,适应现代软件开发的不断变化的需求。
下面是一些演讲现场的精彩瞬间:
Eric Johnson是亚马逊云科技的一位首席开发者代言人,在reInvent2024活动上介绍了他的嘉宾演讲者Uma。
一个关于事件驱动架构的诙谐插图,生产者自豪地发出事件而不关心消费者,象征着这种架构方法中的解耦和自由。
在亚马逊云科技 re:Invent 2024的主旨演讲中,Andy Jassy诙谔地承认他在发音“Kafka”时遇到了困难,同时介绍了Amazon MSK,这是一项完全托管的Apache Kafka服务。
Amazon Fargate是一种无服务器计算引擎,允许您运行容器而无需管理底层实例,从而实现每秒计费的微服务无缝部署。
亚马逊云科技推出了基于事件的容器,这是一种使用Amazon Fargate和Amazon EventBridge运行大对象处理和计划任务的新方式。
Amazon Lambda专为短暂的计算任务而设计,而Amazon Fargate则更适合于大规模的长期运行容器化工作负载。
演讲者鼓励观众访问12d.com上的其他同主题会议,以继续学习相关服务。
总结
在这场精彩的会议中,Eric Johnson和Uma Ramadas深入探讨了使用Amazon ECS和Amazon Fargate构建事件驱动架构(EDA)。他们首先定义了事件和EDA,强调了其解耦和响应式的特点。他们探讨了各种集成模式,如事件路由器(EventBridge、SNS)、事件存储(SQS、Amazon MQ)和事件流(Kinesis Data Streams、Amazon MSK)。
Uma随后介绍了Amazon Fargate,这是一种无需管理底层实例即可运行容器的无服务器计算引擎。她展示了通过事件触发运行独立任务以及长期运行服务来处理来自队列或API的消息的模式。会议还讨论了扩展技术,包括自定义指标和目标跟踪策略。
Eric深入探讨了使用Amazon Step Functions和Amazon Managed Workflows for Apache Airflow(MWAA)进行编排的模式。他强调了从Step Functions同步、异步和回调模式调用ECS任务。会议还探讨了新推出的Step Functions Activity模式,用于处理高流量场景。
最后,他们强调了在实施之前理解EDA原则的重要性,并提供了进一步学习的资源。会议以拥抱事件驱动架构作为构建可扩展、健壮、解耦且可随时间演进的系统的方式而结束。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。