关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Amazon Web Services AppSync Events, Real-Time Event Broadcasting, Connection Management, Message Fan-Out, Event Enrichment, Event Filtering]
导读亚马逊云科技 AppSync 使开发人员更容易构建能够消费实时数据更新和事件的应用程序,如实时体育比分和统计数据、群聊消息、价格或位置和日程更新。通过 亚马逊云科技 AppSync 管理的 WebSocket 通道,您可以轻松扩展以连接数百万用户并传递数十亿条消息。在本次会议中,了解像 PGA 巡回赛这样的组织如何使用 亚马逊云科技 AppSync 向其应用程序用户提供实时事件更新。此外,还可以了解新功能的概览,如增强的过滤选项和与 Amazon EventBridge 的原生集成。
演讲精华以下是小编为您整理的本次演讲的精华。
在现代应用程序开发领域,实时体验的需求变得至关重要。在亚马逊云科技 re:Invent 2024大会上,亚马逊云科技解决方案架构师Kim和Amazon AppSync产品管理高级经理Bill Fine推出了全新的亚马逊云科技 AppSync Events服务,这是一种全托管的发布/订阅解决方案,旨在帮助开发人员构建大规模实时应用程序。
Kim首先强调了实时体验在增强用户互动方面的重要性。事件广播是一种常见的用例,涉及同时向众多订阅客户端发送更新。想象一下,作为一名狂热的Seattle Seahawks球迷,你目睹DK Metcalf攻入改变比赛走向的关键一分。实时获取这种关键更新至关重要,确保你与体育场内振奋人心的欢呼声保持同步。这种实时体验带来沉浸感,让球迷感觉自己是正在上演的行动中不可或缺的一部分。
另一个引人注目的例子来自电子商务领域,其中库存可用性是一个关键因素。想象一下,你在最喜欢的在线购物平台上看中了一款心仪的高端Instant Pot,但一个小时后收到一封电子邮件,告知该商品已无货,尽管之前显示有库存。实时库存状态与延迟通知之间的这种不一致,导致了次优的用户体验,凸显了在用户积极参与购物过程时,需要实时的库存更新。
除了事件广播,实时协作用例进一步展示了这项技术的变革潜力。考虑多回合游戏领域,其中战略决策取决于玩家之间实时交换行棋。对手移动的延迟更新可能会严重影响整体策略,从而降低预期的游戏体验。
在呼叫中心运营领域,实时协作同样至关重要。想象一下,多个代理同时处理工单的情况。如果没有实时更新显示某个代理已经认领了特定工单,就存在重复工作和效率低下的风险,从而最终影响向客户提供的服务质量。
虽然实时体验的好处是显而易见的,但Kim承认开发人员在实现此类解决方案时经常遇到挑战。轮询模式是一种常用技术,但给客户端实现带来了沉重负担。通过定期查询服务器以获取更新,客户端本质上受限于这些请求的频率,从而导致延迟增加和可能延迟接收关键信息。
此外,这种方法导致了不必要的资源利用。每次客户端向服务器发出请求更新时,即使没有新信息,也必须分配计算资源来处理请求。当数百万客户端同时向服务器发出更新请求时,这种低效率可能会快速升级,带来可扩展性挑战。
一些开发人员试图通过实现自己的WebSocket解决方案来规避这些限制。然而,这种方法带来了一系列新的复杂性,其中最主要的是连接管理。随着WebSocket服务器数量的增加,跟踪已连接的客户端、监控其连接状态、通过连接ID唯一标识它们以及实现消息扇出模式以向所有已连接的客户端发送更新变得越来越复杂。
因此,开发人员经常发现自己不得不编写大量后端代码来处理自定义发布/订阅授权模式、消息处理、过滤、转换以及日志记录和指标等基本企业功能。这些非差异化代码虽然对应用程序功能至关重要,但却分散了核心业务逻辑,增加了整体运营开销。
现有的亚马逊云科技服务,如Amazon API Gateway WebSockets、Amazon IoT Core和亚马逊云科技 AppSync GraphQL订阅,提供了部分构建实时体验的解决方案。但每种解决方案都有自身的局限性或需要大量自定义代码开发。
为了响应客户反馈,亚马逊云科技推出了AppSync Events,这是一种专门为大规模构建实时体验而设计的发布/订阅解决方案。AppSync Events通过提供内置身份验证、客户端连接管理、广播功能、点对点通信和消息转换功能,简化了实时应用程序开发。
利用无服务器架构,AppSync Events允许开发人员只为所使用的资源付费,并随着应用程序使用量的增长自动扩展。这种方法旨在减少与构建和管理实时体验相关的运营开销,同时优先考虑应用程序性能。
AppSync Events的核心功能围绕发布者和订阅者展开。发布者可以是应用程序客户端或后端事件驱动服务(如Amazon EventBridge或DynamoDB Streams),通过HTTP POST API调用发布事件。订阅者则可以是应用程序客户端或事件驱动服务,通过建立WebSocket连接来接收实时更新。
AppSync Events的核心概念是通道命名空间,它定义了各个通道的功能和行为。这些命名空间提供了一种可扩展的方式来划分发布者和订阅者如何与API交互,集中配置特定通道。通道本身是临时的,在发布者发送消息和订阅者建立连接时即时创建。
使用AppSync.js运行时环境编写的JavaScript事件处理程序,允许开发人员拦截发布和订阅请求。在发布者端,“onPublish”处理程序支持事件丰富、模式验证和事件过滤。对于订阅者,“onSubscribe”处理程序则支持细粒度授权和订阅过滤。
安全性是亚马逊云科技的一个重中之重,AppSync Events遵循这一原则,支持各种身份验证和授权模式。在API级别,开发人员可以为发布者和订阅者配置默认授权模式,并在命名空间级别覆盖这些模式。支持的模式包括Amazon Cognito User Pools、OpenID Connect、Amazon Lambda用于自定义授权、API keys以及亚马逊云科技身份和访问管理(IAM)用于基于角色的身份验证。
为了演示AppSync Events的简单性和强大功能,Kim进行了现场演示,邀请观众通过手机上的网络应用程序参与其中。在几分钟内,她使用亚马逊云科技控制台创建了一个功能齐全的AppSync Events API,并使用PubSub Editor进行测试,展示了发布事件、建立订阅和实现自定义事件处理程序的简易性。
Bill Fine随后深入探讨了利用AppSync Events的真实架构模式。事件广播模式,如PGA巡回赛和博彩平台所采用的,涉及一个或少数发布者向数千甚至数百万连接的订阅者发送更新。
例如,PGA巡回赛利用移动设备在锦标赛期间从高尔夫球手那里实时捕获数据,如杆数、球距离和果岭位置。这些数据被输入DynamoDB数据库,然后通过AppSync Events广播给订阅者,使球迷能够实时了解他们最喜欢的球手的表现。
同样,博彩平台依赖AppSync Events来处理数十亿条消息发送给数百万客户,利用该服务的可扩展性和低延迟来实时传递赔率和事件更新。
另一方面,协作模式涉及更广泛的发布者与有限的订阅者群体进行协作互动。Bill展示了一个使用AppSync Events构建的四子连棋游戏应用程序,说明该服务如何促进玩家之间的实时互动。
虽然AppSync Events提供了强大的开箱即用功能,但Bill还强调了客户实现的高级模式。事件持久化是一个常见需求,可以通过将AppSync Events与Amazon EventBridge、S3和Amazon Lambda等服务集成来实现。
确保事件顺序是另一个关键方面,特别是在事件顺序具有重要意义的场景中。通过利用为事件分配单调递增的序列号或时间戳等技术,开发人员可以在AppSync Events中维护所需的顺序。
作为一项相对较新的服务,AppSync Events建立在经过战斗考验的AppSync GraphQL订阅基础设施之上,后者每天已经管理数十亿个事件。这一基础确保了高性能和可扩展性,默认配额支持每秒100万个出站事件、每秒1万个入站事件,以及无限数量的订阅者(新连接速率限制为每秒2000个)。
AppSync Events在30个亚马逊云科技区域提供服务,使开发人员能够将实时API部署在靠近用户的位置,从而降低延迟。对于基本用例,亚马逊云科技预计p50延迟指标低于50毫秒,p99延迟低于200毫秒。
从成本角度来看,AppSync Events采用了简单的定价模型:每百万次事件操作(入站/出站消息、WebSocket操作)收费1美元,每分钟连接收费0.08美元。为了鼓励采用,亚马逊云科技在第一年内提供每月25万次免费事件操作和25万分钟免费连接时间的免费层。
展望未来,AppSync Events的路线图承诺了令人兴奋的发展。针对需要安全、隔离的实时模式的客户,亚马逊云科技正在开发虚拟私有云(VPC)内的私有API。此外,除了当前的HTTP POST方法之外,还在开发通过WebSocket发布的功能,以进一步简化开发人员体验并减少延迟。
亚马逊云科技还在努力使开发人员能够从事件处理程序内部调用Amazon Lambda函数,提供更大的灵活性,并能够利用除JavaScript之外的编程语言或访问AppSync.js运行时环境中不允许的网络资源。
与其他亚马逊云科技服务集成是一个重点关注领域,计划推出针对DynamoDB、Aurora和OpenSearch等数据库以及EventBridge和Amazon Bedrock(用于生成式AI用例)等服务的内置目标或数据源。这些集成将允许事件处理程序与数据库交互、用额外数据增强事件或将事件发送到后端事件驱动架构。
此外,亚马逊云科技旨在通过在AppSync Events服务本身中提供内置事件持久性选项、事件排序、在线检测和事件模式验证等功能,简化高级模式,从而减少自定义实现的需求。
在AppSync Events的开发过程中,亚马逊云科技与客户密切合作,将他们的反馈和用例纳入产品路线图。Bill鼓励与会者分享他们的见解和需求,强调亚马逊云科技致力于倾听社区的声音,并根据他们的需求来塑造服务的未来。
总之,亚马逊云科技 AppSync Events代表了一个重大进步,使开发人员能够构建大规模的实时应用程序,具有企业级功能和无服务器架构,从而减少运营开销。通过简化实时通信模式、提供内置身份验证和授权,以及与其他亚马逊云科技服务无缝集成,AppSync Events旨在彻底改变开发人员构建实时应用程序的方式,实现曾经难以实现的丰富、身临其境的用户体验。
下面是一些演讲现场的精彩瞬间:
演讲者实时与观众互动,要求拥有或运营具有实时需求的应用程序的观众举手。
为了让狂热的粉丝能够在重大时刻发生时毫无延迟地体验到,实现了实时事件广播。
演讲者解释了现场演示背后的工作原理,一个轻量级的React Web应用程序通过HTTP POST和WebSockets与AppSync Events API进行接口,以实现实时更新。
AppSync Events允许事件丰富、模式验证和通过“onPublish”处理程序进行过滤,从而在将已发布的事件传递给订阅者之前对其进行后处理。
亚马逊云科技 AppSync JavaScript运行时能够通过添加时间戳和会话ID等附加字段来丰富事件,简化事件处理和跟踪。
AppSync Events与生成式AI模型无缝集成,使用户能够通过自然语言与其策略进行交互,并实时接收量身定制的响应。
演讲者鼓励与会者探索与AppSync相关的会议目录,并提及虽然大多数会议已满员,但视频重播将可用。
亚马逊云科技 AppSync Events 是一项全新的全托管发布/订阅服务,旨在构建大规模实时体验。它通过提供内置的身份验证、连接管理、消息扇出和事件转换功能,简化了实现实时用例(如事件广播、库存更新和协作应用程序)的过程。
该服务围绕“命名空间”展开,命名空间定义了发布者和订阅者进行交互的通道。事件处理程序允许使用代码自定义消息流,以实现丰富、过滤和授权。AppSync Events 支持常见的身份验证模式,如 Cognito、IAM 和 API 密钥,可在 API 或命名空间级别进行配置。
一个关键优势是可以快速入门 - 您只需在控制台中点击几下,就可以在几分钟内创建一个企业级实时 API。它提供了大规模支持,默认限制为每秒 100 万条消息和无限连接,覆盖 30 个全球区域。无服务器架构降低了运营开销,同时通过只为所使用的资源付费来实现成本效率。
展望未来,亚马逊云科技 计划添加 VPC 支持以实现私有 API、通过 WebSockets 发布、Lambda 集成、内置数据源连接以及事件持久化和排序等本地功能。目标是尽可能简化实时应用程序的构建,同时为关键任务用例提供高级功能。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。