性能API来处理许多请求

我正在开发一个iOS应用程序来显示来自MongoDB数据库的消息。 该应用程序有大约50,000活跃用户,所以它是相当沉重的服务器上。 我正试图重新考虑应该如何构buildAPI。 我刚刚了解了一些关于AWS API网关,Google Cloud Functions,Firebase等的内容

如果我只需要一些function来提取新闻列表,用户列表等,那么到2017年为止,构build此API的最佳方法是什么? 我一直以为我应该简单地用一些端点创build一个Node.js服务器。 但现在看来,创build单独的terminal节点的performance似乎更好,例如,AWS API网关(每个节点都指向AWS Lambda函数)。

但是什么是最可扩展的select?

Cloudfront(使用caching) – > API网关 – > Lambda将是一个可扩展的解决scheme。 由于您没有selectDynamoDB,因此您需要为您的存储和可用性pipe理mongoose。

为了使其更先进一些,您可以将Lambda Edge与Cloudfront配合使用,使其在多个区域中处于活动/活动状态。 所以如果一个地区出现故障,应用程序仍然可用。

当你说“高性能”时,你的情况是什么意思?

如果你需要一些提取新闻列表,用户列表等的function,那听起来不像是性能问题。

如果您想知道AWS Serverless Stack是否可以处理数千或数百万个请求,则答案是肯定的,API Gateway + Lambda可以处理任何规模的请求。

如果您只需要通过哈希键查询数据,则DynamoDB将非常适合! 此外,还有一个自动缩放function 。 但是,如果您需要执行扫描或一些复杂的查询,那将会有点贵,有时会变慢。 对于这种情况,您可以将DynamoDB数据stream式传输到Elasticsearch或数据仓库解决scheme。

我不确定是否将Lambda与MongoDB结合起来会很好。 假设您selectMongo Atlas等托pipe的MongoDB服务,您需要为系统添加更复杂的function(如VPC对等),并pipe理/ optmize到MongoDB的lambda连接( 使用MongoDB Atlas优化AWS Lambda性能 )。 如果你处理了一百万个请求调用,那么我猜很多Lambda函数将会同时开始运行,MongoDB中将打开多less个连接?

除了AWS Serverless Stack以外,还有可以轻松扩展系统的Elastic BeansTalk 。

所有解决scheme都有优点和缺点,您可以使用API​​ Gateway + Lambda或Elastic Beanstalk(或其他供应商解决scheme)进行扩展。 我认为“可扩展”是云供应商最近提供的内置function,“性能”只是在devise基础架构时应该分析的主题之一。