我是nodejs的初学者。我正在尝试在生产环境中使用nodejs。我想实现nodejs故障转移。当我执行聊天应用时,如果一个节点服务器出现故障,聊天不应该中断,并且应该自动连接到另一个不值得的服务器,并且应该使用相同的套接字id进行进一步的聊天,以便聊天消息不会被触发。这可以实现吗?任何样本。
我不应该使用Ngnix/HAProxy。另外,让我知道节点服务器应该是怎样的:主动-主动还是主动-被动
发布于 2015-12-14 09:12:53
PM2是首选的进程管理器,特别是具有自动故障转移、自动扫描、自动重启等功能。
引言如下:
PM2是Node.js应用程序的生产流程管理器,具有内置的负载均衡器。它允许您永远保持应用程序的活动状态,在不停机的情况下重新加载它们,并简化常见的系统管理任务。
在生产模式下启动应用程序非常简单:
$ pm2启动app.js
PM2不断受到700多个测试的攻击。
官网:http://pm2.keymetrics.io
适用于Linux (稳定的)、MacOSx (稳定的)和Windows (bèta)。
发布于 2015-01-24 23:24:30
有几个问题你需要一次解决:
守护-保持你的应用运行:如前所述,像forever这样的脚本可以用来监督你的nodeJS应用程序在失败时重新启动它。这对于在最坏的情况下启动应用程序是很好的。
类似地,recluster可用于派生应用程序,并通过创建管理程序进程和子进程使其更具容错性。
未捕获异常:nodejs中的一个已知障碍是无法使用try/catch块捕获异步错误。因此,异常可能会冒泡并导致整个应用程序崩溃。
而不是让这种情况发生,您应该使用domains来创建受异常影响的活动的逻辑分组,并适当地处理它。如果您正在运行带有状态的the服务器,那么在终止应用程序之前,可能会捕获一个未处理的异常,并正常关闭其余的连接。
(如果您正在运行无状态应用程序,则可以忽略异常并尝试继续运行;尽管这不一定是可取的。小心使用它)。
安全:这是一个很大的话题。您至少需要确保:
顺便说一句,我看到你在NodeJS前面使用Apache,这并不是必须的,因为apache可能会在它的线程模型的负载下比nodeJS在它的事件循环模型下更困难。
发布于 2013-12-10 23:43:39
假设您使用数据库对客户端进行身份验证,那么它并不需要完成太多任务,我的意思是,像forever那样管理服务器脚本状态的脚本,
如果它失败了,它会尝试启动脚本,除此之外,您还应该设计服务器脚本来处理每个已知和可能的未知错误,发送给它的任何信号等。
一个小的例子就是streams。
(Websocket Router)
|
|_(Chat Channel #1) \
|_(Chat Channel #2) - Channel Cache // hold last 15 messages of every channel
|_(Chat Channel #3) /
|_(Authentication handler) // login-logout--希望我在某些方面能帮上忙。
https://stackoverflow.com/questions/20491352
复制相似问题