インタビューの質問35:負荷分散を実現する方法は何ですか?

今日の問題は、ロードバランシングが解決するように設計されている問題は何ですか ロードバランシングを実現する方法は何ですか?

問題は解決しました

ユーザーの要求を複数のサーバー(より多くのリソース)に分散して、同時実行性の問題を解決します。

ハードウェアロードバランシング

コストは比較的高く、同時実行性はF5など数百万単位です。

ソフトウェア負荷分散

HTTPリダイレクトロードバランシング

image.png

負荷分散プロセスは上記のとおりです。

1負荷分散サーバーへのリクエスト、

2バランスアルゴリズムに従って、304を返し、ブラウザへのIPの計算を担当するサーバーにリダイレクトします。

3次に、ブラウザは、計算を実際に担当するサーバーに直接要求します。

4最後に、実際に計算したサーバーがクライアントブラウザーに応答します。

短所:

1.要求が2つのサーバー(負荷分散サーバー、実際のコンピューティングサーバー)を通過するため、応答時間が長くなります。

2.サーバーのパブリックネットワークIPがブラウザーへの実際の負荷にさらされているため、セキュリティは比較的低くなります。

Javaコードの実装:

response.sendRedirct("http://ip/xxxService?parama=a");

DNS負荷分散

image.png
負荷分散プロセスは上記のとおりです。

1.ユーザーはドメイン名を要求し、DNSサーバーに要求します。

2. DNSサービスは解決されたIPアドレスをクライアントに返し、リダイレクトのためにブラウザーに公開されません。

3.クライアントは、返された計算に関与するサーバーIPを取得し、サーバーを要求します。

4.計算サーバーが応答情報を返します。

改善:

1.ロードIPを毎回要求する必要はありません。キャッシュを再利用してパフォーマンスを向上させることができます。

2. dnsは、実際に計算されたサーバーIPを公開する必要はありません(ブラウザーにリダイレクトされず、2番目の負荷分散が実行され、イントラネットIPは公開されません)。セキュリティはわずかに優れています。

この方法はさまざまな場所と複数のアクティビティで採用されており、1つのIPがさまざまなリージョンのIPに解決されてロードバランシングの第1レベルを達成し、次にリージョナルIPに基づいて第2レベルのロードバランシングを行います。

リバースプロキシロードバランシング

image.png

ロードバランシングプロセスは次のとおりです。

1.クライアントが負荷分散サーバーへの要求を開始し、負荷分散サーバーがアルゴリズムに従って負荷IPを取得します。

2.負荷分散サーバーが要求を作成し、イントラネットの負荷を計算サーバーに要求します。

3.計算サーバーが応答結果を負荷分散サーバーに返します。

4.負荷分散サーバーは、応答結果をクライアントに返します。

たとえば、nginx、apache

短所:httpレイヤーに基づくロードバランシングは、比較的重いプロトコルであり、効率はわずかに低下します。

一般に、比較的小規模なクラスターに適用できます。規模は10以上です。

IP層での負荷分散

image.png
ネットワーク層のIPアドレスを置き換えるには、http層で作業する必要はなく、オペレーティングシステムカーネルのIPデータパケットのアドレスを直接置き換える必要があります。効率は、HTTPレイヤーに基づくリバースプロキシよりも高くなります。
負荷分散プロセス:

1.クライアントが負荷分散サーバーを要求します。

2.負荷分散サーバーは、宛先IPをイントラネットマシンのIPに変更します。

3.イントラネットマシンが計算された後、応答IPが負荷分散サーバーipのイントラネットアドレスに変更されます。

4.負荷分散サーバーは、応答IPを自身の外部ネットワークIPに変更し、結果をクライアントに返します。

短所:

要求と応答性は、負荷分散サーバーを介してIPレイヤーで置き換える必要があり、応答データは後の期間でボトルネックになります。

データリンク層の負荷分散

image.png
応答データが大きすぎて効率が低いという問題を解決します。
データリンク層のMACアドレスを変更することにより、IPは仮想IPを使用してロードバランシングを実現します。

負荷分散プロセス:

1.クライアントが負荷分散サーバーを要求します。

2.負荷分散サーバーは、MACアドレスをコンピューティングサーバーとして置き換え、IPは負荷分散サーバーのIPです。

3.コンピューティングサーバーは、クライアントのデータに直接応答します。

この負荷分散方法は最高のスループットを備えており、大規模なインターネット企業がこの負荷分散方法を使用しています。

LVS負荷分散は、IP層とデータリンク層を組み合わせた負荷分散方式です。Linuxは、構成を通じてこれら2つの負荷分散方法を実現できます。

まとめ

この記事は負荷分散の目的から始まります。つまり、高い同時実行性に対処するために、リクエストはより多くのサーバーに分散されます。

単純なものから複雑なものまで、ロードバランシングを実現するHTTPリダイレクション、ロードバランシングを実現するDNS、ロードバランシングを実現するリバースプロキシ、ロードバランシングを実現するIPレイヤー、ロードバランシングを実現するデータリンクレイヤーを導入しました。絵は1000語に相当し、負荷分散のプロセスを示します。

一般的に、DNSとデータリンク層の負荷分散が一般的に使用されます。

image.png

オリジナリティは、好きで、フォローして、サポートするのは簡単ではありません!転載出典を明記し、コミュニケーションを図り、一緒に進歩を遂げ、コミュニケーションを歓迎します。
私はJavaソフトウェアプログラミングの知識とプログラマーのキャリアパスを共有し続けます。ようこそ、注目してください。長年にわたってプログラミングと学習のためのさまざまなリソースを編成し、公開番号「Li Fuchun継続的出力」に注意を払い、共有するための「学習資料」を送信します!

おすすめ

転載: www.cnblogs.com/snidget/p/12673461.html