パフォーマンスの問題を解決したら、次のステップはセッション同期の問題を解決することです
Web クラスターを構築した後は、負荷分散の後であるため、セッション同期の問題を最初に考慮することになります。 、同じページへの同じ IP アクセスが異なるサーバーに割り当てられ、セッションが同期されていない場合、ログインしたユーザーはしばらくログインしたままになります。したがって、この記事では、この状況に応じてこの問題を解決するための 3 つの異なる方法を示します。
1. データベースを使用してセッションを同期する
この方法を使用する必要がある場合は、次の 2 つの方法を考えました。
1. ローエンド コンピューターを使用します。データベース 具体的には、Web サーバーのセッションを保存するか、ファイル サーバー上にこの特別なデータベースを構築します。ユーザーが Web サーバーにアクセスすると、セッション同期の目的を達成するために、この特別なデータベース内のセッション ステータスを確認します。
2. この方法は、セッションを格納するテーブルを他のデータベース テーブルと一緒に配置することです。mysql もクラスター化されている場合、各 mysql ノードにはこのテーブルが必要であり、このセッション テーブルのデータ テーブルはリアルタイム同期されている必要があります。
注: データベースを使用してセッションを同期すると、データベースの負荷が増大します。データベースにセッションを置くと、間違いなく状況が悪化します。上記 2 つの方法のうち、最初の方法の方が優れており、セッション テーブルが分離され、実際のデータベースへの負担が軽減されます。
2. Cookie を使用してセッションを同期する
セッションはサーバー側に保存されるファイル形式であり、Cookie はクライアント側に保存されるファイル形式です。方法は非常に簡単で、Cookie を転送ステーションとして使用し、ユーザーのページ訪問によって生成されたセッションを Cookie に格納します。 Web サーバー A にアクセスすると、セッションが生成され、Cookie に保存されます。このとき、Web サーバー B はまずサーバーにセッションがあるかどうかを判断し、セッションがない場合はクライアントのセッションを確認します。存在しない場合は、セッションが実際に存在しないことを意味し、Cookie 内のセッションを Web サーバー B に同期して、セッションを同期できるようにします。
注: この方法は実装が簡単で便利であり、データベースへの負担は増加しません。ただし、クライアントが Cookie を無効にすると、セッションが同期されなくなり、Web サイトのセキュリティが失われます。暗号化されていますが、それでも偽造可能です。
3. memcache を使用してセッションを同期する
この機能がないと、memcache をセッションの同期に使用できません。 Web サーバー内のメモリを組み合わせて「メモリ プール」を形成できます。どのサーバーがセッソインを生成しても、この「メモリ プール」に配置することができ、他のサーバーを使用することもできます。
利点: この方法でセッションを同期すると、データベースへの負担が増加せず、Cookie を使用する場合と比較して、セッションをメモリに保存する方がファイルから読み取るよりもはるかに高速になります。
欠点: Memcache はメモリをさまざまな仕様のストレージ ブロックに分割します。この方法では、memcache がメモリを完全に利用できないと判断され、ストレージ ブロックが不十分な場合、メモリの断片化が発生します。
4. 概要
上記の 3 つの方法はすべて実行可能です
1 つ目の方法はシステム速度に最も影響を与えるため、推奨されません
2 つ目の方法は効果はありますが、セキュリティ上のリスクが依然として存在します。方法は 3 つあり、個人的には 3 番目の方法が最適だと思うので、皆さんにもそれを使用することをお勧めします