我有一个运行的应用程序:
- 一个 nginx 实例作为前端(提供静态文件)
- 用于后端的 node.js 应用程序集群(使用 cluster 和 expressjs 模块)
- 一个 Postgres 实例作为数据库
如果应用程序需要可扩展性(这仅适用于 HTTP/REST 请求),这种架构是否足够:
每秒500个请求(每个请求只从数据库中获取数据,这些数据可能是几个ko,并且获取后不需要大量计算)。
20000个用户同时连接
瓶颈在哪里?
最佳答案
对于指定的负载(500 个简单请求/秒),我不认为这会是一个太大的问题。我的猜测是甚至不需要 Node 实例集群。
但是,由于您只有一个实例,因此在扩展时,这很可能成为您的瓶颈。你还有一个额外的问题,那就是这将是你的单点故障(我不熟悉 Postgres,这里使用的是 Oracle 集群和 dataguard,这意味着我们有一个备份数据库集群来缓解这种情况) .
如果您不需要关系数据模型,那么 MongoDB 可能是更具可扩展性的选择。
要记住的另一件事是您的网络基础设施。如果您要添加集群/Node ,请确保网络可以处理分布式负载。
最后一件事:通常,如果不进行性能/容量/压力测试,就无法确定架构上的应用程序是否可以处理特定负载,因此答案是响亮的“也许”。
关于postgresql - nginx/node.js/postgres 是一个非常可扩展的架构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8167754/