次の単純なフローを実装することに興味があります。
クライアントは、サーバーが保存する単純なメッセージをサーバープロセスに送信します。メッセージには階層構造の IMO がないため、最適な方法は、rdb ではなくファイルに保存することです。
しかし、私が見ているように、2つの選択肢があるので、これを最適化する方法を理解したいと思っています:
- サーバーは 200 OK をクライアントに送信し、クライアントが遅延に気付かないようにメッセージを保存します。
- サーバーはメッセージを保存してから 200OKを送信しますが、クライアントはファイル I/O のオーバーヘッドに気付きます。
私は (1) のパフォーマンスを好みますが、実際にはメッセージが保存されなかった場合 (さまざまなエラーの場合) に、クライアントがすべて問題ないと考える可能性があります。
それで、nio とメモリ マップされたファイルを使用できるかどうかを考えていました。
しかし、これは mem-mapped ファイルを使用するのに適しているのでしょうか? メモリマップファイルを使用すると、たとえばプロセスがクラッシュした場合にメッセージが保存されることが保証されますか?
私の考えでは、フローは多くのファイルを作成/開いたり閉じたりするので、これはメモリマッピングファイルの良い候補ですか?