0

免責事項: この投稿の著者は、Web アプリケーションのソフトウェア アーキテクチャに関する理論的な知識しかなく、実際的な知識はほとんどありません。

次のアーキテクチャ アウトラインを使用して Web アプリを構築するとします。

  1. ユーザーがアカウントを作成/編集/削除し、アカウント レコードを作成/更新/削除できる典型的な Web フロントエンド...
  2. ... すべてのユーザーのアカウントを保存するデータベース。
  3. Jabber ボット (おそらく別の物理マシン上の別のサービス) はユーザーに話しかけますが、同じデータベース内のユーザーに関する情報を検索して更新する必要があります (2)。

したがって、基本的に、同じ 1 つのデータベースを使用する 2 つのアプリケーションがあります。データの整合性、競合状態、およびその他の問題により、これが適切なソリューションであるかどうかはわかりません。

典型的な使用例は次のとおりです: User1 は Jabber ボット (3) と対話しており、ボットはデータベース内のデータを検索および更新する必要があり、まったく同時に User2 は (1) を介してアカウントを作成します。これには何らかの対話が必要です。データベースと (2)。

必要な機能を維持しながら、そのタイプのアーキテクチャを回避するにはどうすればよいでしょうか? または、2 つの異なるサービスから 1 つのデータベースにクエリを実行する必要がないようにアーキテクチャを設計するにはどうすればよいでしょうか?

(残念ながら、このアプリの「ビジネス モデル」では、1 つの Web サービスで「アカウント管理」(1) と「Jabber ボット」(2) ロジックを持つことはできません)。

PS問題のシステムの最も重要な要件は、高可用性です(何らかの形で回答に影響する可能性があります)。

4

1 に答える 1

1

2 つの異なるサービスからデータベースを照会または更新することに問題はありません。データベースは、複数の異なる要求を同時に処理するように設計されており、これらの同時要求が同じアプリケーションからのものであるか、異なるアプリケーションからのものであるかはデータベースにとって重要ではありません。

Jabber サービス (3) を削除しても、Web アプリ (1) によって複数の同時 Web 要求が処理され、並列データベース クエリが作成される可能性があります。

一定の制限に達するまでは問題ありません。特定の制限 (たとえば 1000 の同時リクエストとしますが、実際の数はさまざまな状況によって異なります) を超えると、データベースをクラスター化する必要がある場合があります。

しかし、そこに到達する前に、パフォーマンスの他のボトルネックに直面することになります。たとえば、キャッシュを適切に設定すると、データベース サーバーの 1 つのインスタンスでより多くのユーザーにサービスを提供できます。

于 2012-05-07T11:50:50.357 に答える