ホームページ > php教程 > php手册 > PHPスーパーロードバランシング

PHPスーパーロードバランシング

WBOY
リリース: 2016-06-21 08:54:29
オリジナル
981 人が閲覧しました

概要

スーパー ロード バランシングは、サービスの継続的な拡張、マシン数の増加、マシンのパフォーマンスの違いなどの問題を解決して、システムの安定性を高め、リクエストの圧力を自動的に分散するように設計されています。このアルゴリズムは複数のモデルとバランス戦略を実装しており、構成を通じてランダム化、ポーリング、一貫したハッシュなどを実装できます。同時に、コンピュータ室全体への関連配布も実現できます。すでに複数のシステムで使用されています。

タグ

ロードバランシング

コンテンツ

既存システムに存在する問題:

1. 接続が遅く、瞬間的なアクセスが遅い。

シーン 1:

バックエンドに新しいマシンを追加した場合、キャッシュヒット率が低いため応答速度は遅くなりますが、タイムアウトすることなく接続できます。 ui へのアクセスが継続すると、ui はブロックされます。

シーン 2:

バックエンド モジュール内の特定のマシンの応答が遅い場合。フロントエンドがアクセスを続けると、ブロックされます。

2. クラッシュ。

シーン 1:

断続的にリクエストに応答できますが、速度が非常に遅いです。 ui を踏み固めます。

3. ハイブリッド展開。

シーン 1:

複数のモジュールが同じマシン上にある場合、プロジェクトは影響を受けます。

4. マシンの重量。

シーン 1:

古いマシンのパフォーマンスは低いですが、新しいマシンは強力なパフォーマンスを持っています。したがって、それらには異なる圧力がかかるはずです。

5. マシン間の冗長性。

シーン 1:

バックエンドはキャッシュ モジュールに大きく依存しており、一貫したハッシュ アルゴリズムを使用しているため、1 台のマシンに障害が発生すると、他のマシンのキャッシュ ヒット率に大きな影響を与えます。したがって、このマシンに対するリクエストを別のコンピュータ室に分散したいと考えています。

6. php と c は同じ戦略を使用します。

PHP と C が使用しようとしている戦略は、実際には非常に似ています。開発の重複を避けるために、PHP と C は同じ負荷分散ライブラリを使用することを望んでいます。

解決すべき問題:

デザインのアイデア:

1. バランス戦略によって計算された均衡値に従って、サーバーを逆順にソートします。

2. 選択内容を読み込みます。手順 1 でソートしたサーバーを次の順序で選択します:

a. 接続失敗の確率に応じて選択します。

注: 横軸は失敗の数を表し、縦軸は選択の確率を表します。

Cconn: 範囲内の失敗の数

f(Cconn): 接続確率、値の範囲は (0, 100]

b. 健康状態に応じて選択します。

モデル全体はサービス処理時間の収束に基づいています。

分析:

1) マシンの状態が良好であれば、平均処理時間は安定したレベルに保たれ、小さな変動であってもすぐに安定します。

2) マシンに問題が発生し始めると、処理時間が増加し始めます。増加が一定期間を超えて続く場合は、サービスに影響を与える可能性があることを意味し、一定期間後に安定する場合は、リクエストにあまり影響を与えないことを意味します。

f(healthy): マシンの健全性ステータス、値の範囲 [0,1]

select(healthy): マシン選択確率、値の範囲 [R,1]

c. すべてのマシンが選択されていない場合は、サービス対象のマシンがランダムに選択されます。

3. マシンのトラフィックは均等に分散されます。

マシンが異なれば、処理能力も異なります。ステップ 2 に従ってマシンを選択すると、処理時間が 1/T (T>=2) である他のマシンも選択する必要があり、圧力の一部が対応するマシンに割り当てられます。

k 台のマシンの処理時間を t1, t2,...,tk、選択したマシン id=i とし、このマシンより処理能力の高いマシンの時間を p1, p2,...,pr, とする。 (ここで、pj × T

アルゴリズム設計:

A. 平衡アルゴリズム

1. 一貫したハッシュ アルゴリズム。

各サーバーの IP とポートに加えて、balance_key を文字列として連結し、MD5 署名を作成します。

値(サーバー) = md5(サーバーIP + サーバーポート + バランスキー)

2. ランダムアルゴリズム。

値(サーバー) = ランダム();

3. ポーリングアルゴリズム。

値(サーバー) =((server.id – (%サーバーカウントを四捨五入)) + サーバーカウント) % サーバーカウント

4. 多肢選択アルゴリズム。

ランクは 1 に初期化されます。デフォルトのサーバーに障害が発生した場合は、ランク +1

値(サーバー) =((サーバーID – (ランク % サーバーカウント)) + サーバーカウント) % サーバーカウント

B. ロードアルゴリズム

1. 接続状態アルゴリズム。

a. 各サーバーのステータス キューを開きます。 bool queue[K] は失敗の数をカウントするために使用されます。チームに悪い状態が入るたびに、カウントは 1 ずつ増加します。不良状態がキューから取り出される場合、カウントは 1 つ減ります。

b. f(Cconn) の式に従って選択確率を計算します。

c. rand()%100 を使用して、マシンを選択するかどうかを決定します。

2. 健康状態アルゴリズム。

a. 各マシンは 1 秒以内の処理時間 T と時間 C を維持します。

b. 1 秒経過したら、T と C を平均処理時間 R として計算します。

c. M 秒ごとに、最近の各マシンの平均処理時間をカウントし、式 select (健全) に従って選択確率を計算します。

d. rand()%100 を使用して、[0, select(healthy)*100] でマシンを選択するかどうかを決定します。

C. トラフィックの平準化

ポリシーに従って要件を満たすマシンを選択し、トラフィック均等化式に従ってトラフィックを割り当てます。

割り当てるときは、balance_key+server メソッドとrandom()に従ってマシンを割り当て、リクエストが同じマシンに配置されるようにしてください。




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート