【问题标题】:How do you build node.js dynamic web server? (upgrade server without notice)如何构建 node.js 动态 Web 服务器? (升级服务器恕不另行通知)
【发布时间】:2016-02-14 22:20:46
【问题描述】:

我知道 node.js 服务器缓存模块。因此,启动服务器后,所有文件都会“编译”,并且您对代码的所有更改都可以在重新启动服务器后生效。

但是,如果网站上总是有数百名用户在线 - 您如何进行这些更改(重新启动服务器)以使数百名客户端不会注意到任何问题和停机时间?

请给我一些关于(我猜)可扩展性、平衡服务器负载等的指南和(你自己的)示例,这样我也可以使用 node.js 制作很棒的大型动态网站。

【问题讨论】:

标签: javascript node.js dynamic server scalability


【解决方案1】:

使用 Node.JS 实现持续正常运行的最佳方法是运行 2 个 Node 服务器并使用 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

【讨论】:

  • 同意 TheBANHAMMER,我想提一点,如果您在集群模式下使用 pm2,请尝试在每次要重新启动节点服务器时重新加载服务器(重新加载会优雅地重新启动节点服务器) .因此,如果您的一台服务器正在服务并且在您重新加载之间,它会等待该请求成功处理,然后才重新加载。 pm2 gracefulReload all 我假设您已经探索过在集群模式下使用 pm2 的想法。如果没有,请查看keymetrics.io/2015/03/26/pm2-clustering-made-easy
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
相关资源
最近更新 更多