完全なドライ!分散システムの負荷分散|建築ドライ

個人ブログのナビゲーションページ(クリック、右側にリンク個人のブログを開くために):ダニエルは、テクノロジ・スタックにあなたを取ります 

まず、ロードバランシングは何ですか?

負荷分散とは何ですか?

私はラボでnginxのと最初の接触を覚えて、サーバーのサイトに展開する場合nginxのが必要です。nginxのは、リバースプロキシ、ロードバランシングとHTTPキャッシングのためのサービス・コンポーネントです。そこでここでは、ロードバランシングとは何かありますか?

(LB、ロードバランス)をロード・バランシング、それは技術ソリューションです。リソースの複数(典型的にはサーバ)の負荷を割り当てるため、過負荷を回避するために、リソースの使用を最適化します。

ファイル

操作を実行する各サービスインスタンス部に相当するリソースは、ロード・バランシングは、インターネット分散システム、高い並行性および高可用性の大流量の問題を解決するために、複数の動作ユニットを実行する処理動作を大量のデータを共有することです。それの可用性は何ですか?

第二に、可用性は何ですか?

まず、高可用性であるかを理解?

これは、CAP定理はまた、3つのインジケータ分散システム、分散システムの基礎です。

  1. 一貫性(一貫性)
  2. アベイラビリティ(可用性)
  3. 分割耐性(パーティションフォールトトレランス)

その高可用性(ハイアベイラビリティ)それは何ですか?可用性は、HAと呼ばれる、一般的には平均的な通常期間よりも、特定のサービスの実行時間性能を提供するために参照し、システムの機能又は指標です。逆に、システムのサービス時間の排除は使用できません。

測定システムは、高可用性を満たし、全体と通常のサービスがまだ使用可能であるように、サーバーがダウンした場合や、システムの複数のときということです。

例えば、9の4以上の可用性を確保するために、いくつかのよく知られている部位、すなわち、99.99%以上の利用可能性です。その0.01%は、いわゆるダウンタイムの割合です。例えば、賞賛への電力供給業者のウェブサイトは、サービスはお金とビジネスユーザーの損失になります使用できません。まあ同時に、システムのダウンタイムやサービスが利用できない補償基礎の可用性が向上します。

ファイル

そのような単一のサービス、単一の負荷分散とサービスインスタンス複数の代わりのサービス注文の単一のインスタンス、下即ち、冗長な方法の使用は、信頼性を高めることができます。

すべてのすべてで、負荷分散(ロードバランス)が考慮されなければならない分散型システムアーキテクチャ設計の要因の一つです。通常、負荷分散、サービスインスタンスと冗長性、高流量、高並行性と高可用性の分散問題解決システムによって。コアキーをロードバランシング:分布が均一であるかどうか。

第三に、一般的な負荷分散の場合

ファイル

シナリオ1:マイクロサービスアーキテクチャ、特定のサービス・インスタンスハローへのルーティングゲートウェイ。

  • 二つの同一のサービスインスタンスハローサービス、ポート8000​​、別のポート8082
  • 2に要求されたサービスインスタンスのハローの均一な分布を可能にする負荷分散機能によるLB香港
  • ハッシュアルゴリズムの入力値などとして消費者ID:デフォルトの加重ラウンドロビンアルゴリズムだけでなく、消費者:アルゴリズム戦略のバランスを取る多くの香港・ロード

ファイル

シナリオ2:マイクロサービスアーキテクチャ、サービスコールクラスタBのサービスを提供しています。クライアントの負荷分散コンポーネントによってリボン:

  • 高度な負荷分散戦略アルゴリズムは、最も簡単な選択がランダムでラウンドロビンではなく、

第四に、インターネット分散システム・ソリューション

ファイル

一般的なインターネット分散システムアーキテクチャは、一般的に次の、いくつかの層があります。

  • クライアント層:例えば、ユーザーのブラウザ、APP終了
  • F5など技術選択Nignx:プロキシ層をリバース
  • ウェブ層:前端と後端は、シナリオ、ウェブ端末缶NodeJS、RN、Vueの分離しました
  • ビジネスサービス層:Javaの、ゴー、一般的なインターネット企業、技術的なプログラムの選択があるSCや春ブーツ+ダボのサービスと
  • データ記憶層:DBの選択のMySQL、キャッシュセレクションのRedis、検索の選択ESなど

層4の層1からの要求は、アクセスの層は、ロード・バランシングを必要とします。すなわち、時間の複数のコール上りトラフィック下流側には、均一な呼び出しを必要としました。ビューのシステム全体のポイントこのように、それはより多くの負荷分散であります

ティア1:クライアントレイヤ - >リバースプロキシ層のロードバランシング

クライアントレイヤ - >それを達成する方法のリバースプロキシ層を負荷分散?

答えは次のとおりです。DNSのポーリング。A(アドレス、DNS IPの戻りアドレスを指す)によるDNS IPアドレスが複数。例えば、ここではIP1 bysocket.com DNSの設定とIP2を訪問します。可用性へのリバースプロキシ層は、少なくとも2つのAレコードが存在します。対応する二つのサービスインスタンスのIPような冗長nginxのは、単一障害点を防止します。

ポーリングDNSによってすべての要求bysocket.comドメインは、対応するIPアドレス、リバースプロキシのIP層、すなわちnginxの外部ネットワークIPに対応する各サービスインスタンスを返します。これは、得られたリバースプロキシ分配層のための要求ごとに行うことができる等化例です。

ティア2:リバースプロキシレイヤー - >負荷分散のWeb層

リバースプロキシレイヤー - >それをどのように達成するかのロードバランシングWeb層?

ロードバランシングモジュールは、リバースプロキシ層によって処理されます。このようnginxのようないくつかのバランシング方法があります。

  1. ポーリング要求。時系列に何度も何度も、その後のWebサービス層に一つずつ割り当てられ、要求。Webサービス層がダウンしている場合は、自動的に削除
upstream web-server {
    server ip3;
    server ip4;
}
  1. IPハッシュ。IPアドレスのハッシュ値に基づいて、ウェブ層へのルートに対応して決定されます。IPであれば、ユーザが均一であるように、そのWeb層への要求が均一です。同じIP要求が同じWebサービス層に配布されるという利点があります。各ユーザーのアクセスWebサービス層となるよう修正され、セッションの問題を解決することができます。
upstream web-server {
    ip_hash;
    server ip3;
    server ip4;
}
  1. 体重体重、公正、url_hashなど

ティア3:Webレイヤー - >負荷分散ビジネス・サービス層

Web層 - >どのようにそれを達成するためにバランスのビジネス・サービス層をロードするには?

例えば、ダボは、サービス登録、サービス低下、アクセス制御、動的に構成可能なルーティングルール、重量調整、負荷分散を含むサービス管理プログラム、です。一つの特徴は、インテリジェントなロードバランシングです:内蔵負荷の様々な戦略、下流ノードのインテリセンスの健康のバランスをとる、大幅にシステムのスループットを向上させる、コール待ち時間を減らします。

失敗やサポートサービスの横展開の単一の点を避けるために、サービスは、多くの場合、複数のインスタンス、つまりダボクラスタの展開を展開します。サービスインスタンスの複数のランダムな負荷がNull第プロバイダへのコールの20ランダムに選択されたいずれかのポリシー設定プロバイダのバランスをとる、サービスプロバイダであろう。その後、プロバイダのアドレスリストからロードバランスコンポーネント、バランスの取れた戦略を使用して、コールが失敗した場合、呼び出しを選択したプロバイダを選択し、別のコールを選択します。

ダボは4負荷分散戦略を構築しました:

  • RandomLoadBalance:ランダムな負荷分散。ランダム選択。ダボは、デフォルトのロードバランシング戦略です。
  • RoundRobinLoadBalance:ポーリングの負荷分散。投票を選択します。
  • LeastActiveLoadBalance:アクティブコールの最小数、同じ乱数がアクティブです。アクティブなコール数の数は、前と後の間の差を指します。だから、あまり遅いプロバイダが要求を受け取ること、大きいが遅くプロバイダ・カウントのでコールの前と後の違いになります。
  • ConsistentHashLoadBalance:一貫性のあるハッシュ負荷分散。常に同じマシン上に落ちる同じパラメータを要求します。

また、ビジネスニーズので、あなた自身の負荷分散戦略を実行することができます

レイヤ4:ビジネス・サービス・レイヤー - >データ記憶層を負荷分散

通常DBProxyによって達成データ記憶層を、ロードバランシング。たとえば、MySQLのサブライブラリーサブテーブル。

単一データベース又は単一のテーブルへのアクセスが大きすぎると、データの多すぎる量が上下左右二次元を分割分割する必要があります。例えば、セグメンテーションルールのレベル。

  • レンジ、時間
  • モジュロハッシュ、店舗IDや注文に応じて同様

しかし、この負荷で以下の質問に対処する必要があります。

  • 分散トランザクション
  • クロスデータベースの参加など

ステータスサブライブラリーのサブテーブルの製品ソリューションは数多くあります:など详细シャーディング-JDBC、アリ・コバー、

V.の概要

外観は、ロードバランシングは、システム全体またはソフトウェアです。これは、上流と下流の通話の内層と思われます。限り呼び出しがあるとして、我々はこの因子負荷分散を考慮する必要があります。負荷が(ロードバランス)を均衡よう考慮されなければならない分散型システムアーキテクチャ設計の要因の一つです。下流主に受信した要求を均等に分散させる方法を考えてみましょう:

  • ティア1:クライアントレイヤ - >リバースプロキシ層を負荷分散。DNSによるポーリング
  • ティア2:リバースプロキシレイヤー - >バランシングのWeb層をロードします。nginxのロード・バランシング・モジュールにより、
  • ティア3:Webレイヤー - >バランシングビジネスサービス層をロードします。負荷分散サービスモジュールガバナンスのフレームワークにより、
  • レイヤ4:ビジネス・サービス・レイヤー - >データ記憶層を負荷分散。データ、偶数データ、及び要求する理論的に均一の水平分布による。同様に、このような購入者IDフラグメントによって

付属のJava / C / C ++ /機械学習/アルゴリズムとデータ構造/フロントエンド/アンドロイド/パイソン/プログラマ読み/シングル書籍図書Daquanは:

(乾燥した個人ブログでそこ開くには、右クリックしてください):技術的なドライ開花を
===== >> ①[Javaのダニエルは、高度なへの道であなたを取る] << ====
===== >> ②[+ ACMアルゴリズムデータ構造ダニエルは、高度なへの道であなたを取る] << ===
===== >> ③[データベースダニエルは高度への道であなたを取る] << == ===
===== >> ④[ダニエルWebフロントエンドの高度への道であなたを取るために] << ====
===== >> ⑤[機械学習のPythonとダニエルあなたにエントリを取ります高度なロード] << ====
===== >> ⑥[建築家ダニエルは高度への道であなたを取る] << =====
===== >> ⑦[C ++ダニエルは、道路上をお連れに進ん] << ====
===== >> ⑧[ダニエルは高度への道であなたを取るのiOS] << ====
=====> > ⑨[ウェブセキュリティダニエルは、高度なへの道であなたを取る] ===== <<
===== >> ⑩[Linuxオペレーティングシステムを、ダニエルは高度への道であなたを取る] = << ====

何の未収果物はありません、あなたの若い友人は、友人がテクニックを学びたい願って、道路の方法ですべての障害を克服することは、技術に結びつける本を理解して、コードをノック、原理を理解し、実践を行くことになります決定しましたそれはあなたの将来、あなたの夢を生活、あなたの仕事をもたらすでしょう。

公開された47元の記事 ウォンの賞賛0 ビュー258

おすすめ

転載: blog.csdn.net/weixin_41663412/article/details/104898968