分散システムにおけるセッション共有の 5 つの方法

分散システムにおけるセッション共有の 5 つの方法

[[272319]]

1. NFSベースのセッション共有

NFS は Net File System の略称で、Unix ネットワーク ホスト間のディレクトリ共有の問題を解決するために Sun によって最初に開発されました。

このソリューションは実装が最も簡単で、二次的な開発をあまり必要としません。共有ディレクトリ サーバーを各チャネル サーバーのローカル セッション ディレクトリにマウントするだけで済みます。欠点は、NFS が複雑なセキュリティ メカニズムとファイル システムに依存しているため、特にセッションなどの同時読み取りと書き込みが多い小さなファイルの場合、同時実行効率が高くないことです。共有ディレクトリ サーバーの io-wait が高すぎるため、最終的にはフロントエンド WEB アプリケーションの実行効率が低下します。

2. データベースに基づくセッション共有

最初の選択肢はもちろん有名な MySQL データベースであり、セッション操作の読み取りと書き込みの効率を向上させるためにメモリ テーブル Heap を使用することをお勧めします。このソリューションは非常に実用的であり、広く使用されていると思います。欠点は、セッションの同時読み取りおよび書き込み機能が MySQL データベースのパフォーマンスに依存することです。同時に、データ テーブルからセッション レコードを定期的に更新および削除できるように、セッション削除ロジックを自分で実装する必要があります。同時実行性が高すぎると、テーブル ロックが発生しやすくなります。行レベルのロックを備えたテーブル エンジンを選択することもできますが、セッションを保存するためにデータベースを使用するのは、まだ少しやり過ぎであることを認めざるを得ません。

3. クッキーに基づくセッション共有

このソリューションは私たちにとって馴染みのないものであるかもしれませんが、大規模な Web サイトでは現在でも一般的に使用されています。原則としては、サイト全体のすべてのユーザーのセッション情報を暗号化してシリアル化し、それをクッキーの形式でルートドメイン名 (.host.com など) に均一に埋め込むことです。ブラウザを使用してルートドメイン名の下にあるすべての第 2 レベル ドメイン サイトにアクセスすると、ドメイン名に対応するすべての Cookie コンテンツの特性が渡され、複数のサービス間でユーザーの Cookie セッションの共有アクセスが実現されます。

このソリューションの利点は、追加のサーバー リソースを必要としないことです。欠点は、http プロトコル ヘッダーの長さの制限により、保存できるユーザー情報が少量だけであることです。同時に、Cookie ベースのセッション コンテンツは安全に暗号化および復号化される必要があります (プレーン テキストの暗号化と復号化には DES、RSA などを使用し、偽造防止認証には MD5、SHA-1 などのアルゴリズムを使用するなど)。さらに、ブラウザは現在のドメイン名の下にあるリソースを要求するときにローカル Cookie を http ヘッダーに添付してサーバーに渡すため、一定量の帯域幅リソースも消費します。

4. Memcache に基づくセッション共有

Memcache は、Libevent マルチチャネル非同期 I/O テクノロジーに基づくメモリ共有システムです。シンプルなキー + 値のデータ ストレージ モードにより、コード ロジックが小さく効率的になるため、同時処理機能において絶対的な利点があります。私が経験したプロジェクトでは、1 秒あたり平均 2000 クエリを達成しましたが、サーバーの CPU 消費量は依然として 10% 未満でした。

Memcache のメモリ ハッシュ テーブルに固有の Expires データの有効期限と削除のメカニズムがセッション有効期限のメカニズムと一致しているため、期限切れのセッション データを削除するコードの複雑さが軽減されることも特筆に値します。 「データベース ベースのストレージ ソリューション」と比較すると、このロジックだけでデータ テーブルに大きなクエリ負荷が発生します。

5. Redis ベースのセッション共有

<<:  クラウドコンピューティング: 三国志風の「クラウド」

>>:  LVS、Nginx、HAProxy がどのように動作するかを本当に理解していますか?

推薦する

Kubernetes 上の Spark を簡単に

オープンソース版のデータメカニズムの改善Kubernetes 上の Spark の概要を知りたい場合...

他の人の記事を再投稿する場合は、ソースアドレスを忘れずに残してください。

なぜ今日この記事を書き始めたいのか?それは、他の人の記事を収集し、彼らの努力を尊重しないウェブマスタ...

ApacheのRewriteルールの書き方

IDC がコントロール パネルで 301 を実行できない、または疑似静的ルールの記述方法を尋ねている...

クラウド コンピューティングの支出を管理する 7 つの方法

調査会社カナリスの調査によると、クラウドコンピューティングサービスへの世界の支出は2020年第2四半...

7月のBaidu検索エンジンの変更の観察と概要

最近、文章力が鈍ってきたので、Baidu 検索エンジンに関する最近の観察と私自身の小さな意見をまとめ...

エッジコンピューティングがデジタルワークプレイスをどう変えるか

エッジ コンピューティングは、産業企業にとって基盤となるテクノロジーであり、低レイテンシ、強力なセキ...

中国の携帯電話ユーザーの特性分析

2014年9月2日、Meizuは記者会見を開催し、最新のフラッグシップモデルMX4を発表しました。数...

売上成長を促進するためのウェブサイトユーザーの消費心理の浸透に関する簡単な分析

人にとって心こそがすべてです。ただ、それぞれの人の心は本質的に異なります。外的なことは簡単に見ること...

パンダアルゴリズムの3つの特徴について

今年、2012年の鐘が鳴った頃、Googleは2011年に検索エンジンのアルゴリズムを変更しました。...

NewSQL + MySQL 分散データベースを構築するにはどうすればいいですか?

分散データベースに興味のある友人は、Google の F1 と Spanner が NewSQL テ...

chicagovps-$60/3 年/2g メモリ/50g ハード ドライブ/2IP/2T トラフィック

Chicagogovs がサイバー マンデーの超割引を発表しました。2G メモリ、50G ハード ド...

クラウドバーストの一般的な課題を克服する

クラウド バーストは一部の人々の期待通りには普及していませんが、多くの企業は依然としてこのハイブリッ...

2012年12月29日のBaiduランキングの変化についての私の個人的な意見

2012 年 1 か月間、Baidu には基本的に大きな変化はありませんでした。ランキングの変更は、...

簡単な説明: ウェブサイトのコンテンツを更新するときに注意すべき 2 つの量は何ですか?

高品質のコンテンツから高品質の Web サイトが生まれ、Web サイトのコンテンツの重要性は明らかで...

JVMの基本原理の分析

[[409211]]この記事はWeChatの公開アカウント「Geek Rebirth」から転載したも...