あなたがパーティーを主催していて、全員が同じ屋台に並んでいると想像してください。混沌ですよね?ここで、複数の屋台があり、パーティー プランナーがゲストを最短の列で屋台に案内していると想像してください。これは基本的に、ロード バランサーが Web サイトやアプリケーションに対して行うことです。ロード バランサーは、サーバーにとっての究極のパーティー プランナーです。
技術用語で言うと、ロード バランサーは受信ネットワーク リクエストの交通警察のようなものです。これにより、これらのリクエストが複数のサーバーに均等に分散され、単一のサーバーが過負荷になることがなくなります。結果?ユーザーにとって、より速く、よりスムーズで、より信頼性の高いエクスペリエンスを実現します。
正直に言うと、クラッシュしたアプリや読み込みが遅い Web サイトを好む人はいません。ロードバランサーがなければ、すべてのトラフィックは 1 つの貧弱で過負荷なサーバーに送られ、最終的には無駄になります。ロード バランサが変革をもたらす理由は次のとおりです:
サーバーのメルトダウンはもうありません: ロード バランサーはトラフィックを分散することでサーバーの負荷を防ぎ、アプリケーションのスムーズな実行を維持します。
常時営業: 1 つのサーバーが休暇をとることにした場合 (別名ダウンした場合)、ロード バランサーはトラフィックを正常なサーバーにリダイレクトし、ユーザーが何も気付かないようにします。
成長の余地: 増加したトラフィックを処理するためにサーバーを追加しますか?ロード バランサーは、忙しいキッチンに人手を増やすのと同じように、新しいサーバーがシステムにシームレスに適合することを保証します。
ロードバランサーは、ただ闇雲にサーバーにトラフィックをスローするだけではありません。彼らは賢いアルゴリズムに従って各リクエストの送信先を決定します。簡単で共感しやすい例を挙げて、3 つの人気のあるものを見てみましょう:
これは、カード ゲームでトランプを配るようなものです。ロード バランサーは、循環方式でリクエストを 1 つずつ各サーバーに分散します。
例: ピザの宅配サービスを想像してください。各配達ドライバーには、すべてのドライバーが忙しくなるまで、一度に 1 つの注文が順番に割り当てられます。シンプルで公平ですよね?
最適な用途: 容量と速度がほぼ同じサーバー。
ここで、ロード バランサーはアクティブな接続が最も少ないサーバーを探し、そこに次のリクエストを送信します。これは食料品店で最も人が少ない行列を見つけるようなもので、より早く対応できます。
例: 複数の窓口がある銀行を想像してください。ロードバランサー(支店長)がキューの最短の窓口へ誘導します。
最適な用途: 一部のサーバーが他のサーバーよりも速くタスクを処理するシナリオ。
これは、最も速いレジの列を選択するようなものです。ロード バランサーは、どのサーバーが最も早く応答するかを確認し、そこにリクエストを送信します。
例: ライドシェア アプリを考えてみましょう。最寄りのドライバーだけでなく、最も早く到着できるドライバーとマッチングされます。
最適な用途: スピードが最優先される場合。
風変わりなシナリオで要約してみましょう:
あなたは、顧客で賑わっているパン屋を経営しています (やった!)。 3 人のレジ担当者と、顧客を最短のラインに誘導するマネージャー (ロード バランサー) がいます。
顧客が順番に到着した場合、マネージャーはラウンドロビンを使用します。
一部の回線の移動速度が速い場合、マネージャーは最小接続数を選択します。
レジ係が非常に早いことが知られている場合、マネージャーは最小応答時間を選択します。
レジ係のストレスや長蛇の列もなく、顧客はケーキを持って満足して帰っていきます。
小規模なブログを実行している場合でも、Netflix のようなグローバル アプリを実行している場合でも、ロード バランサーにより、すべてが時計のように確実に実行されます。サーバーに余裕を与え、ユーザーを満足させ、汗を流すことなくビジネスを成長させることができます。
したがって、次回アプリケーションをスケーリングするときは、ロード バランサーを縁の下の力持ちであると考えてください。サーバーがボール (またはケーキ、ピザなど) を決して落とさないようにしてください。
あなたが開発者であれば、ロード バランサーの構築がロケット科学ではないことを知れば、きっと感激するでしょう。私は最近、Go の強力な同時実行性とシンプルさを活用して、Golang でロード バランサーを作成しました。仕組みの概要は次のとおりです:
Go のゴルーチンを使用すると、ロード バランサーは複数の受信リクエストを同時に処理できるため、効率性と拡張性が高くなります。
受信リクエストのルーティング先を決定するために、Go にラウンド ロビン、最小接続、最小応答時間のアルゴリズムを実装しました。例:
ラウンド ロビンはカウンターを使用して次のサーバーを追跡します。
最小接続数は、各サーバーのアクティブな接続のマップをチェックします。
最小応答時間は、サーバーに定期的に ping を実行して速度を決定します。
ロード バランサーは、(HTTP ping を使用して) サーバーの状態を継続的に監視し、トラフィックが利用可能なサーバーのみにルーティングされていることを確認します。
Go で書かれたロード バランサーはモジュール式なので、SSL 終了、ロギング、高度なアルゴリズムなどの機能を簡単に追加できます。
ここに Github リンクがあります。
以上がインターネットの交通警官: ロード バランサーの楽しいガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。