私は、いくつかの異常な要件であると思われる Netty アプリをどのように設計するかを決定しようとしています。基本的に、リクエストを開始するクライアントがあります。この要求は英語に翻訳すると、「ディレクトリ /whatever/ の下にある小さな小さなファイルを再帰的に取得してください。それらのファイルについて私が言えることは、それらの名前が AAAAAAA.bin と CCCCCCC.bin の間にあるということだけです」となります。
したがって、サーバーはリクエストを受け取り、サーバー側でいくつかのディレクトリのスキャンを開始し、これらすべての小さなファイルを迅速にストリーミングし始める必要があります。パフォーマンスは重要ですが、AAAAAAA.bin と CCCCCCC.bin の間のすべてのファイルを受信したことを確認することも重要です。
では、クライアントとサーバー自体を基本的に非同期にするのは良い設計でしょうか? 言い換えると、クライアントは会話を開始し、リクエストを送信し、確認応答の UUID トークンなどを受け取るだけで、サーバーはファイル (おそらくスレッドごとに 1 つ) の収集を開始し、クライアントに連絡して、それに沿って 1 つのファイルを渡します。 UUIDで?クライアントは定期的にサーバーに「UUID トークン /sometoken/ に一致するリクエストのストリーミングを終了しましたか?」と尋ねることができると考えています。
クライアントとサーバーの両方が会話を開始するため、これがどのように構成されるかはよくわかりません。それとも、他の誰かがより良いデザインのアイデアを持っているのでしょうか? ここでも、パフォーマンス (要求の開始からすべてのファイル転送の完了までの合計時間) が重要です。
ありがとう!