アーキテクチャの進化への技術的な変更

いくつかのアプリをどのようにKangzhu 1分10億の要求

進化パスアーキテクチャ
同時百万:1秒100万のリクエスト
千万の同時:1分6億要求、需要がほとんど限界です

設計と自身のニーズを満たすためにアーキテクチャに最適化されたアーキテクチャ、無制限で最適化することはできません

基本的な考え方
(1)分散(システム、異なるサーバ上に配備複数のモジュール)
(2)クラスタ(複数のサーバー上でソフトウェアの展開、全体として、サービスのクラスが提供される)
、(3)高可用性(システムいくつかのノードに障害が発生し、他のノードが作業を続けるか、対応する治療計画を引き継ぐことができる)
(4)ロード・バランシング(要求が均一な複数のノードに送信されます)

アーキテクチャの進化:

1.スタンドアローンアーキテクチャの
ここに画像を挿入説明
DNSサーバ、実行するDNSサーバーは、DNS IPアドレスは、実際のwww.taobao.com、このようなドメイン名に変換されて、ブラウザではなくTOMCAT対応するIPを訪問することで
、ボトルネック:加入者の増加、Tomcatをそして、データベース間のスタンドアローンのビジネスパフォーマンスをサポートするのに十分ではないリソースの競合

2.最初:Tomcatとデータベースが(最も一般的なアーキテクチャ)個別にデプロイ
ここに画像を挿入説明
非常に大きく、より広い帯域幅を見つけるのは難しい大規模な、DBサーバを見つけるために彼らのパフォーマンス(Tomcatサーバーメモリの両方を改善Tomcatとデータベース・サーバのリソースが排他的ですa)の
ボトルネック:特に読書における加入者の増加、データベースの同時読み取りと書き込み、ボトルネックになる
ノートでは、データベースクラスタによって解決されることはありません

3.第二進化:ローカルキャッシュにも分散キャッシュの導入
ここに画像を挿入説明
Tomcatサーバー上にキャッシュを追加(Javaプログラムが置かれている)、あなたはリクエスト(特に照会)データベースにアクセスする前にオフに傍受の大半を置くことができます
ここに画像を挿入説明
Tomcatサーバ上のRedisをで、十分ではない場合
、あなたは自分でRedisのサーバーを置くことができ、あなたはまた、より少数のRedisのサーバー構成されたマスター・スレーブ同期(センティネルの可用性を高めるために添加することができます)より取得することができ
、ボトルネック:ユーザーの増加数、主に同時圧力スタンドアロンのTomcat上、徐々に応答が遅いです

前記第三の進化は:リバースプロキシを導入し、負荷分散
ここに画像を挿入説明
リバースプロキシを使用して、ユーザが同時nginxの50,000に対応し、100同時Tomcatに対応し、一般的に(均一のTomcatの各々に分配さの多数を要求し、具体的には、サーバーのパフォーマンスに)依存し
、ボトルネックを:同時大幅に増加したキャッシュ容量をサポートすることができ、アプリケーション・サーバーを簡単に多くの要求がデータベースに侵入成長手段の量によって複雑に、拡張することができ、データベースは最終的に、単一のボトルネックになります

5.第四進化:データベース別読み書き
ここに画像を挿入説明
データベースおよびデータベースにはによって、ライブラリーは、読み出しデータライブラリデータベースミドルウェア(myCat)を同期させる同期機構によって複数の読み取り、書き込みライブラリを持つことができ、読み書きライブラリに分割されていますそれは別の読み取りを組織し、データベースの書き込みされて
ボトルネックを:ビジネスは徐々に増加し、異なる事業者の見解との間のギャップは、互いに直接競争の中でさまざまなサービスの大規模なデータベースは、パフォーマンスに影響を与えます。

6.第五の進化:ビジネスサブライブラリーによってデータベースは
ここに画像を挿入説明
、ビジネス間のリソースの競合を減らし、別のデータベースに異なるビジネスデータを保存するために、より多くのサーバーを展開することができシェレメチェボ事業が
ボトルネック:ユーザーの数が増え、スタンドアローン書き込みライブラリは徐々にパフォーマンスのボトルネックを実現します

7.第六の進化:データベース内の大きなテーブルは小さなテーブルに分割され
、上記他のリンク
ここに画像を挿入説明
テーブルを作成するための世代のためのような、それは月ごとにすることができ、あるいは時間の
このような行為は、分散データベース呼び出すことができますが、論理的にはまだ完了しています全体として、データベースは、フレームワークは、現在存在するのシナリオこのような問題の様々な使用のために、MPP(超並列処理)と呼ばれる
ボトルネック:データベースとTomcatはスタンドアロンnginxのは、最終的にボトルネックとなり、大規模なレベルを拡張することができ

8.七進化:LVSはより均衡nginxの負荷を使用するよう
LVSは、オペレーティングシステムのカーネルモードを実行するソフトウェアで、おそらく数百、数千の、分散型パフォーマンスはnginxのよりもはるかに高い、TCPまたは要求の高レベルのネットワークプロトコルに転送することができ
F5ハードウェア、LVSは類似し、より高いパフォーマンス、そして高価でない
ここに画像を挿入説明
、利用者が50万ドル十億のレベルに達することができるこの方法
ボトルネック:LVSは、サーバールームからのボトルネック、または異なる領域に位置するユーザに達し、異なる、別のアクセスが得られ、待ち時間

9.第八進化:DNSポーリング機械室は、負荷分散を達成するために
ここに画像を挿入説明
DNSに複数のIPに対応するドメイン名の設定
、仮想IPが別の部屋にそれぞれのIPアドレス対応する、
既にから、部屋レベルの水平拡張を達成するために並行処理プログラムの数十億ドル、または同時実行数十億数十億の量の面での要求は、誰もが一時的と考えられていない
ボトルネックを:、取得より多くの需要分析、単独のデータベースはニーズの多様を解決することはできません

10.第九の進化:のNoSQLデータベースの導入やエンジンの検索
ここに画像を挿入説明
特定のサイズに大量のデータを、リレーショナルデータベースはもはや適用可能であり、データのクエリ、大量の、MySQLは大量のデータ処理のために結果を実行することはできませんない場合がありますHDFSによってHBaseのを通して、クロールクエリのRedisの及び他の治療はドルイドを解決する等、麒麟により、多次元分析のために、等ES、によって解決することができ、データのキーと値のタイプについて、ストアにファイルシステムを分散
よりの導入を同時に、大幅に避けられないコンポーネントシステムの複雑さを改善し、データの異なるコンポーネントはまた、同期するの整合性を検討する必要性を必要とします

11.第十進化:小さなアプリケーションの解体のための大規模なアプリケーション
上下構造図の定数
ここに画像を挿入説明
より明確アプリケーション、業務の単一のアプリケーションを分割する事業部門によると、互いに独立して、反復のアップグレードの行うことができます、あなたも機能の一部を行うことができます閉じます。
ボトルネック:異なるアプリケーション間で、共通モジュールは、アップグレードに含まれ、いくつかの公共の機能が得られ、そこにある、関連するコードのすべてがアップグレードを続けなければなりません。

第十進化、マイクロサービスに引き込ま
高い効率を引き抜く、複数のアプリケーションでは、ユーザー、支払いやその他の機能が存在している場合は特に、私たち今書き込みspringcloudプロジェクト構造に似て
、今のようになり、この効果を達成するために、あなたは、既製のフレームを使用することができます。

動作環境の分離を達成するために、そして、進化のダウン、インターフェース管理などのESBサービス・バス、コンテナ技術、大規模なシステムを運ぶクラウドプラットフォーム

クラウドプラットフォーム、いくつかの概念:

IaaSの:サービスとしてのインフラストラクチャは、ハードウェアリソースのレベルを申請することができ
たPaaS:プラットフォームをサービスとして、開発の一般的な技術のクラウドプラットフォームとの保守部品提供
のSaaS:機能や要件に従って支払われ、展開後、優れたアプリケーションを開発するためのサービスとしてソフトウェアを。

要約:

(1)した場合のアーキテクチャの進化は、上記の経路に応じて調整する必要があり
、必ずしもではありません!上述した既存のラインの進化、電気供給方向で
実装されるシステム(2)、設計にどの程度のアーキテクチャに
ライン上に十分な、十分であるもの尋ね、ユーザー及びパフォーマンス指標の次の段階を満たすように設計要件
(3)マイクロサービスとビッグデータアーキテクチャ
と多分アーキテクチャ、ソリューションは、同じシステムで、問題のさまざまな側面
ではない具体的な良いか悪いかは、それが別々に処理する必要はありません。

公開された74元の記事 ウォンの賞賛231 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/qq_43107323/article/details/104919132