4

ユーザーが計算用のジョブを送信できる社内 Web サイトを設計しています。私の設計における重要な要素は、システム障害が発生した場合でも、完了するまでジョブをキューに保持することです。

インターネットは、「実際にはデータベースの目的ではない」という考えに反対しているようで、Redis のようなキー/バリュー ストア (または Node.js の Kue のような Redis を利用するジョブ キュー) に適しています。この設計の目的は、ジョブ キューで見られるように、かなり一時的なデータの読み取り/書き込みでデータベースに過負荷をかけないようにすることであるという意味で理解していると思います。私の使用例では、データベースの使用はかなり低く、データベースが提供するデータの永続性は、私がここで探している重要な機能のようです。

私の読書では、Redis などの一部のキー/値ストアには永続化機能があることがわかりましたが、システムがダウンした場合にすべてのデータを確実に回復できるように構築されているわけではありません。

ここで何かが足りないのですか、それともこれは正しいように聞こえますか?

4

1 に答える 1

1

私の読書では、Redis などの一部のキー/値ストアには永続化機能があることがわかりましたが、システムがダウンした場合にすべてのデータを確実に回復できるように構築されているわけではありません。

Redis では、データはバックグラウンド スレッドを使用してメモリからディスクに永続化されます。実際には、システムがダウンしてもデータベースが破損することはありませんが、問題は、ディスクへのスナップショットの前または最中にシステムがダウンする可能性があり、最後に成功したスナップショットの後に作成されたデータが失われることです。

Redis サーバーが 99.9% の時間稼働していると確信できる場合、これは大きな問題ではありませんが、問題は存在します。

結局のところ、ジョブに適したツールを使用することをお勧めします。ジェネラリスト データベースは、NoSQL であれ SQL であれ、ジョブのエンキュー用には作成されていません。RabbitMQのように、これを行う既存のツールを使用します。

于 2016-08-18T09:23:05.790 に答える