我有一个应用程序运行:
如果应用程序需要可伸缩性(这仅适用于HTTP / REST请求),那么这种体系结构是否足够:
每秒500个请求(每个请求只从数据库中获取数据,这些数据可能是几个ko,并且在获取之后不需要大的计算)。
20000个用户同时连接
哪里可能是瓶颈?
nginx的一个实例可以每秒处理数千个小静态文件,而不会出汗。
应用程序层的可伸缩性取决于你的应用程序而不是node.js – 如果它在本地存储文件/会话数据/ etc,可能会变得棘手,但是如果你把所有的存储放在像数据库这样的中心位置(或者像Redis用于存储会话数据),然后通过添加更多节点来缩放应用层应该很容易。
数据库几乎总是最难扩展的; 如果你正在做大部分的读操作,那么postgres 9.1有一些非常好的热备份function,可以让你有一个读/写主数据库和几个可以处理大部分读操作的只读从服务器。
越来越多的写入数据库系统可能是最难的可扩展性问题; 当一个超级强大的数据库服务器不能跟上时,大多数人最终会完全反思和重写他们的应用程序(除非从一开始就计划好,但是计划多个主数据库会使许多事情变得越来越难以开始,而且是非常less需要的 – 计算器networking都在一个数据库IIRC上)