mongodb バックエンドが 1 週間で稼働する 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) ?