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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
