amazon-web-services - 如何处理 API 中的即时流量峰值
问题描述
我将 aws 用于我的云基础架构。我使用 ecs fargate 作为我的计算机。我目前正在维护 10-20 个 API,它们与在手机上下载了我的应用程序的成员进行交互。显然,这些 api 中的一两个是我的“主要”api,这些是真正为我的用户个性化的 api,老实说,这是成员真正访问的仅有的两个 api(通过导航到这些屏幕)。
我的业务团队希望向成员发送推送通知,以提醒他们某些新事件,这些事件会将他们置于需要调用这些 API 的屏幕上。因此,我的应用程序在此期间发生了小崩溃。
我已经想到了一些相同的想法,但是由于这显然是跨行业的问题并且是已解决的问题,因此我想要标准解决方案。
我的想法:
- 批量发送通知。这似乎是最好的解决方案,尽管我不确定需要付出多少努力。
- 让无服务器机器为那些需要立即扩展的 API 运行我的请求(aws lambda 函数)。我有很多其他 API,我保留在 fargate 中,因为我不希望我的 lambda 函数太重,然后需要一段时间才能启动。
- 始终扩展机器以处理我在推送通知期间获得的负载。由于成本原因,这似乎不是最理想的。
- 仅在我想发送推送通知的那些时期扩大机器规模,然后将它们缩小。如果我可以自动化整个过程,这似乎是一个不错的解决方案。我可以为每个推送通知遵循一个流程,这将导致系统扩展,然后开始发送通知。
有一个更好的方法吗。对于人们来说,这似乎是一个相对简单的问题,但我没有看到太多关于这个主题的信息。
解决方案
我最喜欢你的第二个选项,因为它是迄今为止最容易管理的(因为你不必管理它)。在那之后,我会选择你的最后一个选择。我将使用步进函数来管理它,其中第一步是扩大 Fargate 中的实例数量。一旦达到所需的水平,您将发送通知。在 Fargate 中为您的服务添加自动缩放以使其自动处理下降。
推荐阅读
- c# - 在 Linq 中创建对象的新实例
- java - 尝试异步引导 Hibernate 时出现 Spring Boot 2.1.0 错误
- windows-installer - 使用 NSIS 卸载 windows 注册表项时,我们是否需要从 windows 注册表中删除每个条目?
- numpy - 通过广播对轴上的 np.minimum 和 np.minimum 进行矢量化
- r - 如何在 biclust 热图中显示行名和列名?
- wordpress - Wordpress 两步自动回复表单提交
- google-cloud-platform - Google Cloud Stackdriver:按 ip 分组的指标
- angularjs - AngularJS JSONP成功功能不起作用
- angular - Azure Devops - 构建定义 ng 构建错误无法读取未定义的属性“_statSync”
- vba - VBA 字符串作为命令文本(不带引号的字符串)