0

多くのファイルを継続的に処理する既存のシステムがあります。大まかに言えば、1 日に約 300 万個のファイルがあり、そのサイズは数キロバイトから 50 MB を超えるものまでさまざまです。これらのファイルは、パスに応じて、受信時から消費が完了するまで、いくつかの異なる処理段階を経ます。これらのファイルの内容と形式により、小さなチャンクに分割することはできません。

現在、これらのファイルが移動するワークフローは厳格であり、入力と出力が固定されたコードによって決定されます (多くの場合、1 人のサブスクライバーが新しいファイル セットのパブリッシャーになります)。しかし、この柔軟性の欠如が問題を引き起こし始めているため、新しい要件を処理できるようにするためのある種の pub/sub ソリューションを検討しています。

ほとんどの従来の pub/sub ソリューションでは、実際のペイロード内にデータが含まれていますが、ファイル サイズが大きくなる可能性があるため、多くのメッセージング プラットフォームの制限を超えています。さらに、複数のプラットフォームが使用されています。ファイルはパスに応じて Linux 層と Windows 層の両方を通過します。

次の目標を念頭に置いて、設計および/または実装に関する推奨事項はありますか?
1. pub と sub の両方のマルチプラットフォーム (Linux と Windows)
2. 永続的なストレージ/ストア アンド フォワードのサポート
3. 大きなイベント ペイロードを処理でき、すべてのサブスクライバーにサービスが提供されると適切にクリーンアップできます
4. ルーティング/ワークフローは構成によって実行されます
5. サブスクライバーは、条件の変更に基づいてフィルター処理された一連の公開イベントをサブスクライブできます (例: 特定のタイプのファイルのみを提供する)。

私は多くのサービス バスと MQ の実装を掘り下げてきましたが、どのツールが最も意味があるかを適切に評価するのに十分な設計アプローチを確立することはできませんでした。ご意見ありがとうございます。

4

2 に答える 2

0

クライアントが内部クライアントである場合は、ActiveMQ を調べることができます。ActiveMQ は最大 2GB のデータをサポートし (私が思うに)、blob メッセージもサポートします。配送と処理(取引あり)を保証します。

お役に立てれば。

于 2012-10-23T19:48:12.003 に答える
0

A1. 前職で同様のシステムを開発しました。メッセージ内で数 MB のペイロードを渡さず、代わりにファイル サーバーに格納し、UNC ファイル名のみを渡しました (メッセージングは​​ Java RMI でしたが、ほとんど何でも機能します)。

A2. 最近、Windows Communication Foundation を使い始めました。幸いなことに、私は Windows しかサポートしていないので、それほど大きなメッセージは必要ありません。ただし、ドキュメントによると、プロトコルはプラットフォームに依存せず、ストリーミング メッセージ転送機能を使用して大量のデータを渡すオプションがあります。

どちらの場合も、独自のコードで #4 と #5 の要件を満たす必要があると思います。

于 2010-09-01T18:27:38.027 に答える