私はいくつかの概念について混乱していると思うので、これについて私を助けてくれるようお願いします:
多くのユーザー (企業) が使用する大規模な Web アプリがあり、ユーザー プレミスにデプロイされています。しかし、今は SaaS に移行しているので、アプリがこのように動作するようにセットアップするために、いくつかの適応を行っています。
ユーザーを処理するために、次のように作業しています: ユーザーごとに db があります。多くのサーバーが必要なため、確かに負荷分散が必要なので、「シャード」アーキテクチャを提案しました。私の考えは、それぞれが互いに完全に独立した Web サーバーを持つことです。したがって、すべてのユーザー データをたとえば 10 台のサーバーに分割します。したがって、ユーザーがログインすると、実際にはたとえばサーバー 4 に接続します。実際に可用性を維持するには、これらの各サーバーの 1 つを 2 つから 3 つのサーバーのミニ クラスターにし、それらのサーバー間でデータベースを複製します。各「クラスター」で memcache を使用します。データ/ユーザーがすでに分割されているため、このレベルで負荷分散を行うこともできますが、必要ではないと思います。
いくつかの質問:
これはシャーディングですか?各クラスターが特定のユーザー グループにサービスを提供し、クラスター間に関係がないことに注意してください。各クラスターにフェデレーション db を持つメイン db はありませんが、db 構造は同じで、サーバー間で分割されているだけです。
ユーザーが初めて (認証されていない) 到着したときにリダイレクトするにはどうすればよいですか? 負荷分散が適用されるのはここではありませんか? しかし、ユーザーデータがサーバー間で分割されている場合は? ここには、認証されていないユーザー、サイトの「パブリック」部分を処理する「パブリック/認証クラスター」があると考えていました。また、非常に単純な memcache db に応じて、データが存在するそれぞれのクラスターにユーザーをリダイレクトします。もしそうなら ..
どうすればリダイレクトできますか? 私が見る唯一の方法は、ここで説明したようなものに送信することです。server123.mysite.com が欲しくなかっただけです。
「パブリック/認証クラスター」はうまく設計されていないと思います。メインサイトをすべてのユーザーに提供するためだけに(認証前に)2〜3台のサーバーがあり、背面には5〜6個のクラスターがあり、そのうちのいくつかはスリープ状態になっている可能性があります。またはその逆: パブリック クラスターがスリープしている間、負荷の高いクラスターがあります。その唯一のタスクは、メイン ページを表示し、ログインへのリダイレクト プロセスを処理することだからです。
これがすべて機能する場合、
- この構造は大丈夫ですか?各ユーザーが重いと仮定してください (実際には、php だけでなく、.NET やその他のサービスも動作しています)。やり過ぎだとは思いませんが、複数のユーザーを処理するための構造にすぎません。他のアイデアはありますか?
ご協力いただきありがとうございます。