我有一个带有 mongodb 后端的 node.js 应用程序将在一周内投入生产,我对如何处理应用程序崩溃和重启几乎没有疑问。
假设我有一个简单的路线/followUser
,其中我有 2 个数据库操作
/followUser
----->Update User1 Document.followers = User2
----->Update User2 Document.followers = User1
----->Some other mongodb(via mongoose)operation
如果出现服务器崩溃(由于电源故障或远程 mongodb 服务器关闭)会发生什么情况,如下所示:
----->Update User1 Document.followers = User2
SERVER CRASHED , FOREVER RESTARTS NODE
下面这些操作会发生什么?系统现在处于不一致状态,每次我要求 User2 关注者时我可能都会出错
----->Update User2 Document.followers = User1
----->Some other mongodb(via mongoose)operation
还请为在 linux 中运行的应用程序推荐良好的日志记录和重启/监控模块。
现在我使用域来捕获异常,执行 server.close ,但在 process.exit() 之前我想确保所有数据库事务都已完成,我可以通过测试事件循环是否为空来检查这一点(如何? ) 然后 process.exit(1) ?