セッション一貫性の設計

大鹏
リリース: 2021-06-26 15:54:56
オリジナル
175 人が閲覧しました

セッションの一貫性

セッションとは

Webサーバーは、同じブラウザにアクセスするユーザーのセッションを自動的に作成し、ストレージ機能を提供します。通常、ユーザーのログイン情報はセッションに保存されます。

セッションの一貫性の問題とは何ですか?

バックエンドに Web サーバーが 1 つしかない場合、すべての http リクエストに対して正しいセッションが見つかります。問題は、高可用性を満たせないことです。1 つのサーバーがハングアップすると、それは終わりになります。冗長性 + フェイルオーバー、複数の Web サーバーの展開、および異なる Web サーバーへの nginx ルート。すべての http リクエストはルーティングされますが、同じサーバーにルーティングされることが保証されていないため、一貫性の問題が発生します。

セッションの一貫性を解決するための一般的なソリューション

一貫したハッシュ

最初に思い浮かぶ解決策は、クライアント IP に基づいてハッシュし、同じ IP が同じ Web サーバーに存在することを確認することです。 userId や cityId などのビジネス フィールドに基づいたハッシュを使用することもでき、より柔軟に使用できます。ただし、これは単一性の原則を破壊し、ゲートウェイとビジネスを粘着的にするため、必要な場合以外は使用しないことをお勧めします。利点: キャッシュを節約し、水平方向に拡張できます。欠点: 一部のサービスが再起動されるとセッションが失われ、一部のユーザーが再度ログインすることになります。ハッシュが水平に拡張され、再ハッシュ後にセッションが再分散される場合、一部のユーザーはセッションをルーティングできなくなります

セッション同期

複数の Web サーバー間のセッションは相互に同期されるため、各 Web サーバーには次のものが含まれます。すべてのセッション情報。欠点: すべてのセッションが含まれるため、クラスターの数はメモリによって制限され、拡張も制限されます。

クライアントストレージ

ログイン情報はクライアントに保存され、各リクエストにはユーザー情報が含まれます。サーバーは完全にステートレスであり、拡張が簡単です。利点: サーバー側にストレージは必要ありません。短所: 各 http リクエストにはユーザー情報が含まれるため、トラフィックが無駄になります。Cookie は大量の情報を保存できません。

バックエンド集中ストレージ

ウェブサーバーは、セッション情報を保存するために統合ストレージにリンクします。その後の拡張を容易にするために、それを Redis クラスターに保存することをお勧めします。利点: 情報漏洩のリスクがない; 水平拡張によってデータが失われることはない; 欠点: 追加のネットワーク要求が追加され、redis をクエリするためにビジネス コードを変更する必要がある。

以上がセッション一貫性の設計の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!