負荷分散アルゴリズムには、ポーリング、ランダム、最小接続の 3 つがあります。ただし、他の負荷分散アルゴリズムもあるため、それらも調べる必要があります。さらに、面接中にそれらについて質問される可能性が高くなります。 高性能なクラスターを実現するには、適切なロード バランサーを選択することが重要です。また、さまざまなビジネス シナリオに適したロード バランシング アルゴリズムを選択することも非常に重要です。これまでにいくつかのアルゴリズムを挙げてきました。次に、残りのアルゴリズムについて説明しましょう。 1. 送信元アドレスハッシュアルゴリズム これは戦略を失わない唯一のアルゴリズムですが、負荷分散はソース データ情報とハッシュ アルゴリズムに大きく関係します。 ソース アドレス ハッシュ方式の考え方は、クライアントを要求しているサービス コンシューマーの IP アドレスに基づいてハッシュ関数を介してハッシュ値を取得し、このハッシュ値とサーバー リストのサイズに対してモジュロ演算を実行することです。結果は、アクセスするサーバー アドレスのシリアル番号になります。送信元アドレス ハッシュ方式は、負荷分散に使用されます。同じ IP クライアントのサーバー リストが変更されていない場合は、同じバックエンド サーバーにマップされてアクセスされます。 前回の操作の疑似コード:
このコードは Will.Shun によって書かれています。最初見たときは意味がよくわかりませんでした。後で調べてみると、説明と非常によく似ていることがわかりました。ハッシュ値はハッシュ関数によって計算されます。ハッシュ値はサーバーリストのサイズを法として計算され、結果はアクセスするサーバーアドレスのシリアル番号になります。 2. 加重ラウンドロビンアルゴリズム 重み付けラウンドロビンアルゴリズムを見てみましょう。まず、Nginx の重み設定を見てみましょう。
Nginx が 6 つのクライアント要求を受信した場合、そのうち 1 つをバックエンド a に、2 つをバックエンド b に、3 つをバックエンド c に転送します。 重み付けポーリング アルゴリズムの結果は、サーバー シーケンスを生成することです。リクエストが届くたびに、次のサーバーがシーケンスから取り出され、リクエストが処理されます。 加重ラウンドロビンアルゴリズムの疑似コード:
実際、加重ラウンドロビン アルゴリズムには欠陥があります。特定の特別な重みでは、加重ラウンドロビン スケジューリングによって不均一なインスタンス シーケンスが生成されます。この不均一な負荷により、一部のインスタンスに瞬間的に高い負荷がかかり、システム ダウンタイムが発生するリスクがあります。このスケジューリングの欠点を解決するために、滑らかな重み付けラウンドロビン スケジューリングがあります。興味のある学生は、この滑らかな重み付けラウンドロビン スケジューリングを調べてみてください。 3. 重み付きランダムアルゴリズム 加重ランダム方式は、加重ポーリング方式に似ています。バックグラウンド サーバーのさまざまな構成と負荷条件に応じて、異なる重みが構成されます。違いは、順序ではなく重みに基づいてサーバーをランダムに選択することです。
ここでの違いは、サーバーがランダムアルゴリズムを通じて取得されることです。 実際、次のような例を考えることができます。たとえば、次のシナリオでは、セット S があり、その中に 4 つの項目 A、B、C、D が含まれています。このとき、その中からランダムに 1 つのアイテムを選択したいのですが、抽選の確率が異なります。たとえば、A を引く確率は 50%、B と C を引く確率は 20%、D を引く確率は 10% であるとします。一般的に言えば、各項目に重みを付けることができ、抽出の確率はこの重みに比例します。 4. HTTP 国際化 HTTP メッセージは、画像、ムービー、またはあらゆる種類のメディアを伝送できるのと同様に、任意の言語のコンテンツを伝送できます。 HTTP にとって、エンティティ本体は単なるバイナリ情報のコンテナです。 国際的なコンテンツをサポートするには、サーバーは各ドキュメントのアルファベットと言語をクライアントに伝え、クライアントがドキュメント内の情報を正しく文字に展開してユーザーにコンテンツを提示できるようにする必要があります。 サーバーは、HTTP プロトコルの Content-Type ヘッダーと Content-Language ヘッダーの charset パラメータを通じて、ドキュメントのアルファベットと言語をクライアントに通知します。これらのヘッダーは、エンティティ本体の「情報ボックス」の内容、画面に表示するためにコンテンツを適切な文字に変換する方法、およびその中の単語が表す言語について説明します。 同時に、クライアントは、ユーザーが理解できる言語と、ブラウザにインストールされているアルファベットエンコードアルゴリズムをサーバーに伝える必要があります。クライアントは Accept-Charset ヘッダーと Accept-Language ヘッダーを送信して、サーバーが理解できる文字セット エンコーディング アルゴリズムと言語、およびそれらの優先順位をサーバーに伝えます。 |
<<: アンドリュー・ン氏のチームが2019年のAIトレンドを振り返る:自動運転は寒い冬を迎え、ディープフェイクはモンスターとなった
>>: 「手を自由にする」は夢ではありません! AI がソフトウェア テストの未来を形作る 5 つの方法...
作者は長い間ブログを更新していませんでした。その理由の一つは、開発したプロジェクトで使用されている技...
[[314955]]川沿いを頻繁に歩くと、足が濡れてしまいます。決済の兄貴分であるアリペイも小さな...
9月26日のニュース: ここ数か月、マイクロソフトは人工知能 (AI) 事業の開発を加速させています...
[51CTO.com クイック翻訳] ご存知のとおり、人工知能 (AI) は 1956 年の誕生以来...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
次のようなシナリオを想像してください。 あなたはレベル3の自動運転機能を備えたAudi A8を所有し...
ニューヨーク・タイムズ紙は7月20日、3つの情報源を引用して、グーグルがAI技術を使ってニュース記事...
サプライ チェーン管理は経済の生命線であり、コストを最適化し、無駄を最小限に抑えながら、適切な製品を...
モバイルインターネットの発展に伴い、企業の生産・運営プロセスで生成されるデータは、これまでにない爆発...
IT プロフェッショナルが AI の適用を実験する際、その多くはパブリック クラウドでそれを実行する...
リン・ジエル科学技術の継続的な進歩と発展に伴い、人工知能の発展は時代の必然的な流れであり、我が国の経...