您如何构建 node.js 动态 Web 服务器? (升级服务器恕不另行通知)
How do you build node.js dynamic web server? (upgrade server without notice)
我知道 node.js 服务器缓存模块。因此,在启动服务器后,所有文件都会得到 "compiled" 并且您对代码的所有更改都可以在重新启动服务器后生效。
但是,如果网站上始终有数百个用户在线 - 您如何以您的数百个客户端不会注意到任何故障、停机时间的方式进行这些更改(重新启动服务器)?
请给我一些关于(我猜)可扩展性、平衡服务器负载等的指南和(你自己的)示例,这样我也可以用 node.js 制作很棒的大型动态网站。
使用 Node.JS 实现持续正常运行的最佳方法是拥有 2 个节点服务器 运行 并使用 nginx 和上游提供商代理它们。这样你就可以重启一个,而另一个承担流量负载,然后对另一个节点服务器做同样的事情。
您的 nginx 配置将使用类似于以下内容的内容:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
有关 nginx 代理和上游提供商的更多信息,请参阅 nginx 文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
我知道 node.js 服务器缓存模块。因此,在启动服务器后,所有文件都会得到 "compiled" 并且您对代码的所有更改都可以在重新启动服务器后生效。
但是,如果网站上始终有数百个用户在线 - 您如何以您的数百个客户端不会注意到任何故障、停机时间的方式进行这些更改(重新启动服务器)?
请给我一些关于(我猜)可扩展性、平衡服务器负载等的指南和(你自己的)示例,这样我也可以用 node.js 制作很棒的大型动态网站。
使用 Node.JS 实现持续正常运行的最佳方法是拥有 2 个节点服务器 运行 并使用 nginx 和上游提供商代理它们。这样你就可以重启一个,而另一个承担流量负载,然后对另一个节点服务器做同样的事情。
您的 nginx 配置将使用类似于以下内容的内容:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
有关 nginx 代理和上游提供商的更多信息,请参阅 nginx 文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html