背景:私は、数百万以上のファイルを読み取り、それらのファイルを変換または解析するソフトウェア アプリケーションを設計しています。要件の一部は、スケーラブルな分散システムを構築して、それに応じて読み取りと解析をスケーリングできるようにすることです。
基本的に、ファイル名の最小限の詳細なリストは 1 つの DB であり、クライアントはリストにアクセスして、次にどのファイルを解析/変換する必要があるかを知る必要があります。ファイルは再び別のサーバー/場所にあります。ほとんどの部分は設計されていますが、再検討が必要な重要な部分の 1 つは、さまざまなクライアントにファイル名を提供する設計です。
現在、次の 2 つのオプションがあります。
DB の隣に位置し、すべての要求をファイル名にチャネル化し、クライアントに供給する単一のサービスを設計します。したがって、この場合、クライアントはサービス (事前定義されたプロトコル/フォーマット) と対話し、リストを取得します。
DB と直接対話し、クライアント内で同期/チャネライゼーションを実装するようにクライアントを設計します。
最初のオプションに関する私の唯一の懸念は、それはスケーラブルなアーキテクチャ/設計ですか? スケーラブルなアーキテクチャで、スケーリングで1つのリソースが重要になるような状況に対処した人はいますか(私の場合、すべてのクライアントに供給/サービスを提供する1つのサービスである可能性があります)