构建低延迟、事件驱动型应用程序

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/SVS308-Building_low_latency__event_driven_applications-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 本论坛探索如何构建 Serverless Web 应用程序以实现低延迟和事件驱动支持。了解 Serverless 计算的核心概念、优势和最佳实践。本论坛涵盖 Amazon Lambda 函数的设计和实施,用于处理 HTTP 请求、数据处理和与亚马逊云科技服务的集成。它还重点介绍了使用 [Amazon EventBridge](https://aws.amazon.com/cn/eventbridge/?trk=cndc-detail) 的事件驱动工作流。目标是使您能够创建高性能、可扩展和响应性强的 Serverless Web 应用程序。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1000字,阅读时间大约是6分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 亚马逊云科技的首席开发者倡导者Marcia Villalba在座无虚席的房间里开始了她的演讲。她向观众们表示欢迎,并介绍了她的共同演讲者Brenna Moore,他是Second Dinner的高级软件工程师。Marcia表示,他们的演讲将专注于如何构建低延迟的事件驱动应用程序,以提高应用程序的性能。 Marcia强调,客户常常要求提高应用程序的速度,但却并不完全了解这意味着什么。她希望通过这次演讲,能让与会者对如何实现更快速的应用程序有更清晰的认识,并提供一些实用的想法和模式,以便他们能够在自己的工作实践中应用这些理念。尽管演讲过程中不会进行现场编码演示,但Marcia承诺在演讲结束时,会为所有提出的概念提供一个深入的代码示例和演示资源链接。 在演讲中,Marcia首先定义了一些关键概念,以便让每个人都能明白。她解释了延迟的概念,即客户端请求和服务器响应之间的时间,也就是服务器处理请求并返回数据所需的时间。在Web开发领域,一个常用的指标是首次字节时间,它衡量的是从HTTP请求发出到从服务器获取第一个字节数据的时间。 除了标准延迟之外,Marcia还强调了感知延迟的概念,这个概念关注的是用户在何时能够收到足够的响应并开始取得进展。例如,一个网页可能立即返回最基本的HTML响应,以便浏览器可以开始呈现内容,而加载更大的资源如图像则是异步进行的。因此,即使完整响应需要更长的时间,用户仍然会觉得页面加载速度快。 接下来,Marcia对比了同步和异步应用程序的工作原理。同步应用程序会等待完整的响应后再继续执行后续操作,而异步应用程序则会继续处理请求并在稍后获得响应。这就好比在餐厅等待食物一样——顾客会在等待食物的过程中保持忙碌,直到食物上桌。开发者应该以同样的方式构建应用程序。 在讨论优化同步后端时,Marcia指出了在[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序中使用API、Lambda函数和数据库时的常见同步请求-响应模式。尽管她没有展示具体的实施方法,但她确实提供了一些关于如何优化这些同步后端性能的建议。 使用预分配的并发量保持函数的运行状态并避免冷启动。 - 分配足够的内存以最大化CPU性能和提高效率——Lambda的持续时间计费意味着更多的内存可以降低成本。 - 为Java函数启用SnapStart以加速初始化过程。 - 使用流式传输返回响应的部分内容以减少感知到的延迟。 - 使用API Gateway的速度模板直接集成如DynamoDB等服务,而无需使用Lambda函数。 - 将简单的Lambda函数替换为Step Functions以利用内置的协调功能。 - 启用API Gateway缓存以减少对后端的调用。 通过这些优化,Marcia展示了如何显著改善与基线相比的p95和p99延迟。 在讨论实现异步应用程序的方法时,Marcia强调了异步通信在实时应用程序中的应用。她介绍了两种常见的异步后端模式: - WebSocket支持双向通信,避免了客户端不断的轮询操作。 - AppSync使用WebSocket进行查询和REST进行写入,实现了实时数据同步。 作为一个强大的WebSocket服务,Marcia推荐使用亚马逊云科技的IoT Core进行大规模实时通信。它处理认证和连接,而客户使用MQTT发布和订阅消息。她通过Serverless Video这个应用进行了演示,该应用程序使用了IoT Core和AppSync来实现观众之间的实时通信,从而提供了低延迟和实时视频流的快速交付。 为了降低全球用户的延迟,Marcia讨论了多区域部署策略: - 基于延迟的路由(Latency Based Routing)在Route53中路由用户到最近的亚马逊云科技区域。这相对于单一集中式的应用程序能提供更好的性能。 - DynamoDB全局表在各地区之间复制数据。这对于全球分布的应用程序来说可以提供低延迟的数据访问。 通过在不同区域部署相同的应用栈并结合延迟路由流量,应用程序可显著降低全球用户的延迟。 接下来,Second Dinner的Brenna Moore上台分享了如何将这些策略应用于实际的游戏开发——移动游戏Marvel Snap。Brenna详细介绍了Marvel Snap是如何使用的ASP.NET Lambda函数、SNS和SQS进行事件处理,AppSync用于WebSockets、全局DynamoDB表和多区域基础设施等技术。这些架构使得游戏后端能够应对极端的流量高峰并实现高度响应的体验。为了进行负载测试,Brenna解释说他们构建了一个自定义的压力测试客户端来模拟真实的玩家行为、流量模式和游戏状态。这在上线前验证大规模性能至关重要。尽管进行了广泛的负载测试,但Marvel Snap在发布后仍然遇到了由于高于预期的流量而导致的限流问题。然而,在与亚马逊云科技的紧密合作下,他们迅速解决了这些问题,而没有对玩家产生重大影响。Brenna最后强调,持续监控、负载测试以及与亚马逊云科技的协作对于在任何规模的系统中提供低延迟的重要性。借助正确的架构,即使在大规模增长的情况下,Marvel Snap也能提供无缝的快速用户体验。 Marcia总结了演讲的主要学习内容: * 通过Lambda预置、流处理、缓存等方式优化同步后端。 * 使用WebSockets、AppSync、IoT Core和事件驱动设计接受异步通信。 * 根据用户位置在多个区域部署应用程序。 * 严格进行负载测试并对性能进行监控以应对规模增长。 通过智能地利用这些架构和策略,开发者可以克服延迟挑战并提供立即响应的用户体验。 Marcia和Brenna提供了许多代码示例和资源,以便进一步学习。开发人员拥有超过600个已记录的模板和一个庞大的工具包,他们可以在亚马逊云科技上构建低延迟的事件驱动应用程序。 **下面是一些演讲现场的精彩瞬间:** 领导者正在探讨提高应用程序性能的策略,以满足客户对于更快速服务的需求。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_0.png) 通过引入感知延迟的理念,用户可以在等待响应的同时保持高效工作,从而减少启动所需的内容。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_1.png) 要优化亚马逊云科技的Lambda函数,最简单的方法就是设置合适的内存。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_2.png) 领导者将低效的轮询API比喻成孩子在汽车后排不断询问“我们到了吗?”的情况。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_3.png) 通过运用API Gateway和ASP技术,可以实现一致的HTTP和WebSocket API构建方式。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_4.png) 演讲者讨论了如何使用SNS主题和队列实现在后台服务之间进行异步通信,从而使它们能够独立扩展且不会相互阻塞。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_5.png) Marcia强调了分析计算需求、优化Lambda函数以及采用低延迟的异步事件驱动架构的重要性。 ![](https://d1trpeugzwbig5.cloudfront.net/SVS308-Building_low_latency__event_driven_applications/images/rebranded/SVS308-Building_low_latency__event_driven_applications_6.png) ## 总结 这是来自Marcia Villalba和Brenna Moore的演讲,他们分别来自亚马逊云科技和Second Dinner,主要探讨了如何构建低延迟、事件驱动的应用。 首先,演讲者们阐述了一些核心概念,例如延迟、感知延迟以及优化Lambda函数以减少延迟的方法。这些方法包括分配足够的内存、启用预分配的并发性以及使用流式响应。 接着,他们研究了使用WebSockets和亚马逊云科技服务(如IoT Core)来实现异步应用程序的方法。这种双向通信使得后端能够实时将更新推送给客户端。在此过程中,CQRS模式(命令查询责任分隔)将使用REST API的写入操作与使用WebSockets的读取操作分开。 针对多区域应用程序,Route53基于延迟的路由和DynamoDB全局表有助于减少地理位置分布用户的延迟。演讲者展示了如何在多个区域中拥有资源,以便更接近用户,从而减少网络延迟。 随后,Brenna通过一个关于Second Dinner的游戏Marvel Snap的案例研究,展示了如何将上述模式应用于实际场景。她解释了如何通过使用ASP.NET处理程序在Lambda中构建低延迟API,并使用SNS/SQS实现服务之间的异步消息传递。压力测试和横向、纵向扩展能力是处理启动流量的关键。 总之,优化计算、构建异步/事件驱动架构以及在全球范围内分布资源是降低延迟的关键。演讲者提供了大量进一步的学习资源。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭