私は、多くのモジュール式 Web アプリケーションで構成される Web 製品に取り組んでいます。さまざまなコンポーネントが独自のアプリに分割されていますが、エンド ユーザーには 1 つのアプリケーションのように見えます。
この理由の一部は、複数のアプリケーション サーバー間で簡単に水平方向にスケーリングできるようにするためです。
データ層の水平スケーリングを容易にするために、データベースの前に Web サービス層を使用することを計画しています。このレイヤーは N 台のマシンにスケールアウトでき、その各インスタンスはキャッシュを個別に処理します。
これは、アプリケーションがサービス層のロード バランサーを呼び出し、その呼び出しをサービス インスタンスに割り当て、そのキャッシュを使用してデータを返すか、データベースに接続してデータをクエリするという考え方です。これは、アプリケーション コードを大幅に変更することなく、スケールアウトするための最も簡単な将来を見据えたソリューションのようです。
[N Amount of Databases]
|
\/
[Service Tier X N amount of Machines]
|
\/
[Application Tier X n amount of Machines]
ただし、いくつかの質問があります。ユーザー セッションをサービス レベルで永続化して、各アプリケーションがトークンで認証されるようにしたいのですが、すべてのサービス マシンでセッション データを維持する方法がわかりません。単一障害点。
これをやってのける方法についてのアイデアはありますか?アーキテクチャに関する他のアイデアはありますか? 1 日に数百万件のヒットを処理できる可能性のあるサイトを設計するプロジェクトを行った人は他にいますか?
編集:アイデアさえありませんか?:(