【问题标题】:What's the best server solution to handle high traffic?处理高流量的最佳服务器解决方案是什么?
【发布时间】:2017-07-27 08:40:15
【问题描述】:

要求

应该有一个网络服务,它将一些数据插入到一个表中。 该服务应该能够每秒处理 800 到 900 个请求。只需我们收到一个 POST 请求,然后将数据插入到表中即可。

我们提出的解决方案

我们考虑使用 Amazon 无服务器解决方案 - AWS Lambda

  • 在 Amazon RDS 中创建 MariaDB
  • 创建一个 Amazon Lambda 函数来访问数据库并插入数据(可能在 Node.js 中)
  • 在 Amazon API Gateway 中配置 POST 方法以访问我们的 Lambda 函数,然后我们获取调用 url 以访问 Lambda 函数

我们的解决方案能否达到要求、流程中的瓶颈或我们使用的服务?

有没有更好的解决方案来处理这种流量?

附加要求

我们需要分析通过 Lambda 函数收集的数据。 为此,我们计划将数据移动到不同的表中,并且此数据迁移部分每天发生一次(可能在非高峰期间)。处理这种数据迁移的最佳方式是什么?

【问题讨论】:

  • 为什么不使用 Dynamo? RDS 会在某个时候成为瓶颈。

标签: amazon-web-services aws-lambda serverless-framework


【解决方案1】:

您的设计似乎是 API Gateway -> Lambda -> 数据库。

Amazon API Gateway 具有高度可扩展性,可轻松满足您的需求。您还可以实施限制规则以确保客户端不会滥用您的 API。

AWS Lambda 还具有高度可扩展性。默认限制为 1000 个并发 Lambda 函数执行,但如果超过此数量(例如,如果您的函数需要几秒钟才能完成),它们将自动排队。

一般来说,SQL 数据库不保证性能。查询可以简单也可以复杂,如果不运行大量负载测试,就很难预测性能。

但是,Amazon DynamoDB 是一个 NoSQL 数据库,您可以在其中准确配置每秒所需的读取和写入次数。它还允许在此限制之上进行有限突增,并能够自动缩放以改变全天的性能。

缺点是很难对 NoSQL 数据库中的数据进行性能分析,因此您可能希望将其导出到传统 SQL 数据库(例如 MySQL)或 Amazon Elasticsearch Service。

【讨论】: