nginx / node.js / postgres,可伸缩性问题?

我有一个应用程序运行:

  • 一个nginx实例作为前端(服务静态文件)
  • 后端的一个node.js应用程序集群(使用cluster和expressjs模块)
  • Postgres作为DB的一个实例

如果应用程序需要可伸缩性(这仅适用于HTTP / REST请求),那么这种体系结构是否足够:

哪里可能是瓶颈?

nginx的一个实例可以每秒处理数千个小静态文件,而不会出汗。

应用程序层的可伸缩性取决于你的应用程序而不是node.js – 如果它在本地存储文件/会话数据/ etc,可能会变得棘手,但是如果你把所有的存储放在像数据库这样的中心位置(或者像Redis用于存储会话数据),然后通过添加更多节点来缩放应用层应该很容易。

数据库几乎总是最难扩展的; 如果你正在做大部分的读操作,那么postgres 9.1有一些非常好的热备份function,可以让你有一个读/写主数据库和几个可以处理大部分读操作的只读从服务器。

越来越多的写入数据库系统可能是最难的可扩展性问题; 当一个超级强大的数据库服务器不能跟上时,大多数人最终会完全反思和重写他们的应用程序(除非从一开始就计划好,但是计划多个主数据库会使许多事情变得越来越难以开始,而且是非常less需要的 – 计算器networking都在一个数据库IIRC上)