[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

パーシステンス (persistence)

pointこの用語のポイント

pointロードバランサの機能だよ

pointセッションを維持するための仕組みだよ

スポンサーリンク

簡単に書くよ

パーシステンス (persistence)とは

ロードバランサの機能のひとつで、同じ人からの接続を同じ機器に振り分けることによって、セッションを維持する仕組みのこと
です。

image piyo

詳しく書くよ

順番に見ていきましょう。

ロードバランサは「(負担を軽くするために)処理を振り分ける誘導係」ね。

例えば、ホームページを見るとき、まずホームページを見るときに使うソフトWebブラウザ)からホームページが置いてあるコンピュータ(Webサーバ)に「このページをおくれ」とお願いが出されます。

パーシステンス

そのお願いに対して、WebサーバさんはWebブラウザさんに「ほれ、そのページだよ」とお返事をします。
くれと言われたホームページのファイルをあげるのです。

パーシステンス2

Webブラウザさんは、Webサーバさんからもらったファイルを画面に表示します。

パーシステンス3

これが、ホームページを見るときの流れです。

この流れにおいて、登場するWebサーバさんは1台です。
1台のWebサーバさんが、えっちらおっちらと、お仕事をします。

パーシステンス4

ですが、世の中には人気者のホームページがあります。
たくさんの人から「このページをちょうだい」と言われるでしょう。
そうすると、1台では処理しきれなくなることがあります。

そんなときは、Webサーバをたくさん用意します。
数の力で対抗するのです。
ここでは3台用意したと仮定しましょうかね。

パーシステンス5

もともと1台でやっていた仕事を3台でやります。
1台にかかる負担は三分の一になるでしょう。

ただし、1回の「このページをちょうだい」に対してお返事をするのは1台で十分です。
3台が3台とも「ほれ、そのページだよ」とお返事をすると、逆に混乱させてしまいます。

パーシステンス6

そこで登場するのが、誘導係です。

「このページをちょうだい」のお願いを、まずは誘導係が受け取ります。

パーシステンス7

お願いを受け取った誘導係が、暇そうなWebサーバに「おまえがこれを処理しろや」と割り振ります。

パーシステンス8

こうすることによって、1度にお仕事をするのは1台ですが、全体で見ると3台でお仕事をする状態になります。

パーシステンス9

使う人から見れば今までと同じです。
相手をしてくれているのは1台です。

パーシステンス10

でも実際には3台でお仕事をしています。
1台にかかる負担は三分の一になりました。

パーシステンス11

めでたしめでたし。

このように、負荷分散を目的として「今回はおまえがやれ~」「今回は君がやってね」と処理を振り分けてくれる誘導係がロードバランサです。
ちなみに、今回はWebサーバを例に話をしていますが、用途がWebサーバ以外のロードバランサもあります。

さて、このロードバランサですが、1つ弱点があります。
それは「お仕事がどの機器に振り分けられるかわからないので、セッションの維持ができない」点です。

ん?
「セッション」が何か分かりませんか?

大丈夫です。
説明します。

例えば、ピヨ太君がオンラインショップ(インターネット上のお店)でお買い物をしたとしましょう。

まずは、ピヨ太君の使っているWebブラウザからオンラインショップのWebサーバに対して「この商品買うよ。注文画面をちょうだい」とお願いを出します。

パーシステンス12

そうするとオンラインショップのWebサーバは「ほらよ。これが注文画面だ」とお返事を出します。

パーシステンス13

次にピヨ太君は「注文内容を入力したよ。注文処理をやって結果画面をちょうだい」とお願いを出します。

パーシステンス14

それに対して、オンラインショップのWebサーバは「注文処理をやったよ。これが結果画面ね」とお返事を出します。

パーシステンス15

これでピヨ太君は、無事に注文ができました。

めでたしめでたし。

ただし、ここで1つ注意事項があります。

Webサーバさんは忘れっぽいのです。

実はWebブラウザさんとWebサーバさんのやり取りは、1回のお願いと1回のお返事で完結します。
「注文画面をちょうだい」「これが注文画面だ」で関係は終わりです。
お返事を出した時点で、Webサーバさんは今のやり取りを忘れてしまいます。

パーシステンス16

ですから、次に(さっきの続きとして)「注文処理をやって結果画面をちょうだい」とお願いを出しても、Webサーバさんは戸惑ってしまいます。
「あぁ、さっき『注文画面をちょうだい』ってお願いをくれたピヨ太君ね」とは気づいてくれないのです。

パーシステンス17

Webサーバさんはさっきのやり取りを忘れていますからね。
「注文画面をちょうだい」と「注文処理をやって結果画面をちょうだい」が続きだとは気づきません。
Webサーバさんにとって、それぞれのやり取りは独立しているのです。

パーシステンス18

これでは不便ですよね。

そこで、それぞれのやり取りは独立しているものの「これは一連の流れですよ」と認識させるための仕組みがあります。

パーシステンス19

この一連の流れを認識させる仕組みを「セッション」や「セッション管理」と呼びます。

セッションの具体的な仕組みは、ここでは触れません。
ざっくりと雰囲気だけ説明しておくと、2回目のお願いをするときに、単に「注文処理をやって結果画面をちょうだい」ではなく「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」と伝えるイメージです。
これでWebサーバさんは「あぁ、さっきのアイツか」と気づくことができます。

パーシステンス20

このように涙ぐましい努力をして、忘れっぽいWebサーバさんの記憶をつなぎとめているのです。
独立したひとつひとつの「お願い→お返事」を関連付けて、意味のある一連の流れを形作るための仕組みがセッションです。

さて、このような涙ぐましい努力ですが、ロードバランサが混ざると問題が生じます。

ロードバランサは処理の誘導係です。
複数の機器のどれかに割り振ってくれます。

そうするとですね。

1回目の「注文画面をちょうだい」のお願いを機器1に、2回目の「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」のお願いを機器2に振り分けることも出てくるわけです。

パーシステンス21

機器2は困りますよね。
「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。」と言われても、そんな「さっき」はありません。
「注文画面をちょうだい」なお願いは機器1に行ってるわけですから。

これではセッションを維持できません。

そこで、ロードバランサには「同じ人からのお願いは同じ機器に振り分けるから」な機能があります。
ピヨ太君の最初のお願いを機器1に振り分けたら、それ以降も必ず機器1に振り分けるのです。

そうすれば「注文画面をちょうだい」も「さっき『注文画面をちょうだい』ってお願いしたピヨ太だけどよ~。注文処理をやって結果画面をちょうだい」も機器1に届きます。
機器1は一連の流れを把握できる立場にいるので、セッションを維持することができます。

パーシステンス22

このような、ロードバランサの機能のひとつで、同じ人からの接続を同じ機器に振り分けることによってセッションを維持する仕組みが「パーシステンス」です。

ちょっと小難しい言い方をすると

クライアントとロードバランサ間で(ある程度の)セッション管理を行うことによってセッションを維持する仕組み

と言えるでしょう。

もちろん、振り分け先の機器でもセッション管理を行う必要はありますけどね。
その前段階としての「同じ人からの接続は同じ機器に振り分ける」ロードバランサの機能がパーシステンスです。

image piyo2

一言でまとめるよ

まぁ「パーシステンス」って単語が出てきたら「ロードバランサにおけるセッションを維持するための仕組みなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク