ファイルが絶えず生成されているサーバーがたくさんあります。これらのファイルは、中央の場所に送信する必要があります。ファイルは 50MB を超えることはありません。ZeroMQ を使用してこれらのファイル (メッセージにカプセル化) を送信し、中央の場所でファイルの書き込みが同時に行われないようにする予定です (たとえば、scp を使用して転送を行うと、宛先で多くのディスク書き込みプロセスが開始されます)。
ZeroMQ でこれを行ういくつかの方法を確認できます。
- プロデューサでは REQ ソケットを使用し、コンシューマでは単一の REP ソケットを使用します。これは機能する可能性がありますが、公平なキューイングがないため、低速のプロデューサーを飢えさせると思います。また、REP ソケットが使用できない場合に REQ ソケットがメッセージをドロップするかどうかもわかりません。
- プロデューサでは PUSH ソケットを使用し、コンシューマでは PULL ソケットを使用します。これにはコンシューマーでの公平なキューイングがあり、ドキュメントによると、PUSH ソケットはメッセージを決して破棄しません。しかし、それは完全に信頼できますか?
私の信頼性の要件は次のとおりです。
- メッセージ (私の場合はファイル) は失われません。そのため、コンシューマで受信したメッセージごとにプロデューサーへの確認があるように構築したいと思います。
- 特定のプロデューサからのメッセージは、プロデュースされたのと同じ順序で受信する必要があります。
- プロデューサーは行き来することができ、消費者が一定期間利用できなくなることに抵抗する必要があります。
この種のアプリケーションに適したソケットの種類は何ですか? 私が見るべきzmqパターンの種類へのポインタは素晴らしいでしょう.