並行性の高いソリューション[復刻版]

免責事項:この記事はブロガーオリジナル記事です、BY-SAの著作権契約、複製、元のソースのリンクと、この文を添付してくださいCC 4.0に従ってください。
このリンクします。https://blog.csdn.net/sanyaoxu_2/article/details/78992113

1.アプリケーションと静的リソースを単離し
あなたは専用サーバーに静的リソースを節約する必要がある場合、並行性の量が一定のレベルに達したときに、一緒に保存されているアプリケーションと静的リソースの始まりを、画像、動画、jsファイルなどの静的リソース、CSSやファイルなどのいくつかのリソース、そのサーバの応答に比較的単純な、直接の預金があること、および通常訪問する特別なドメイン名を使用することができる状態の分離は、これらのファイルが存在しないため。
これは、ブラウザが直接アプリケーションサーバーにアクセスすることなく、別のドメイン・ネーム・サーバのリソースを介してアクセスすることができます。チャートは以下のとおりです。

 

2.ページキャッシュ
ページキャッシュが生成されたページがキャッシュされている使用することがあるので、あなたは、メモリの速度にキャッシュされたページが速い場合、たびにCPUリソースを大幅に節約することができページを生成する必要はありません。あなたはnginxのサーバーを使用している場合は、その内蔵のキャッシュ機能を使用することができ、もちろん、あなたが専門のイカのサーバーを使用することができます。デフォルトのページ・キャッシュの故障メカニズムはもちろん、手動でデータを変更した後、適切なキャッシュの無効化を行うことができます、に対処するためのキャッシュ時間のグループです。
ページ・キャッシュは、主にほとんど変更ありませんが、多くのページはほとんど変化しないデータのほとんどは、周波数のデータ変更の小さな部分は、例えば、非常に高い、記事のページには、それが正常であることを示しているのページデータに使用されています完全に静的な、それ以降の記事の「トップ」と「ステップ」の機能だけでなく、応答の数を表示する場合は、周波数データのこの変化が比較的高く、それは静的な影響を与えます。この問題は、あなたはまた、いくつかの変更をリアルタイムで高頻度データを表示することができ、ページキャッシュを使用するか、氏静的なページを使用して、データの読み取りおよび応答を変更するためにアヤックスを使うので、次の2羽の鳥が来て殺すことができますすることができます。

実際には、我々はすべて、最高の効率を知って、消費量は純粋な静的なHTMLページの最小であるので、我々は最も簡単な方法は、実際に最も有効な方法であることを実現するために静的なページを使用して、当社のサイトのページを作ってみます。しかし、コンテンツの多くと頻繁に更新ウェブサイトのために、我々はすべてがそうそこに我々はしばしば訪れたような一般的な情報公開システムCMS、各ポータルサイトのニュースチャンネルを持ち、さらには彼らの他のチャネル、達成するために、手動で一つずつ行くことができない、です管理および実装するための情報発信システム、情報公開システムは、大規模なサイトのために、それは効率的なを持っていますが、またチャネル管理、権限管理、および他の機能と、自動的に生成されたページに、最も単純な静的な情報を得るために自動的にクロールすることができます、管理しやすいCMSが不可欠です。

サイトの公開と情報ポータルタイプに加えて、高いインタラクティブコミュニティ型サイトの要件、静的なポストのパフォーマンスを向上させるために必要な手段であるとして、静的リアルタイムでコミュニティの記事、の更新再静的な戦略が頻繁に使用されたときに、モップの寄せ集めのようなこのような戦略を使用することで、網易のコミュニティにも。

一方、htmlの静的なキャッシュ戦略は、いくつかの手段を使用することで、システム頻繁に使用されるデータベースクエリが、小さなアプリケーションの更新のため、現時点での情報は、このようなフォーラムに設置され、公開情報のフォーラムとして、達成するために静的なHTMLを使用することを検討してください主流のフォーラムは、管理および格納するために、その後、実際には、この情報の多くは、フォアグラウンドプログラムと呼ばれるデータベースバックエンドが、更新頻度が非常に小さいことができ、あなたは、このように多数のデータベースを避け、更新時間の静的な背景の内容のこの部分を考慮することができますアクセス要求。

3.クラスタと分散
クラスタは、要求の処理中に、サーバが主転換効果を呼び出すことができ、各サーバは、同一の機能を有します。

異なるサービスは、異なるサーバーに配信されますが、処理要求の速度、およびクラスタリングを改善し、分散することができるよう要求も同時に使用することができ、複数のサーバを使用する必要があります処理します。

クラスタは、2つの方法があります。一つは静的リソースのクラスタです。もう一つは、アプリケーションクラスタです。静的リソースのクラスタは比較的簡単です。プロセスでは、問題の核心は、アプリケーション・クラスター・セッションの同期です。

1は、自動的に別のサーバーへのセッションで変更した後に同期され、他方は、統一されたプログラム管理セッションを使用することです:セッションの同期は、2つの方法で処理されます。すべてのサーバークラスタが同じセッションを使用して、Tomcatは、簡単な構成で実現することができることで、あなたは、このようなセッションを管理するための統一的かつ効率的なキャッシュプログラムとしてMencached専用サーバのインストールを使用することができる第二の方法のデフォルトを使用する最初の方法ですが、その後、アプリケーションは、開発サーバーセッション要求を取得し、getSessionメソッドを書き換えることでカバーします。

ソフトウェア処理溶液による:クラスタのコアの問題は、問題を処理するために特定のサーバーを割り当てるための要求を受信した後、問題は、専用ハードウェア(F5など)を使用することができる、つまり、ロード・バランシングでもあります。

 

4.リバースプロキシ
リバースプロキシは、直接、本当に、他のサーバからリソースをとり、ユーザに結果を返すサービスを提供していないサーバーにアクセスするクライアントを指します。

図:

 

4.1リバースプロキシサーバーとプロキシサーバ差
プロキシサーバーの役割は、私のドアが必要なリソースは、その後、たとえば、私はプロキシサーバーを伝えるために率先してそのドアを得るために私達にリソースを結果を返します取得私はFacebookを利用して訪問したい扉を与えることですではなく、直接アクセス、そして、あなたはそれを私たちに結果を返し、プロキシサーバへのアクセスを許可することができます。

私は、サーバーを訪問したときにリバースプロキシサーバーは通常のドアで、サーバー自体が他のサーバリソースを呼び出し、私たちに結果を返すために、私のドアは知りませんでした。

プロキシサーバは、当社のイニシアチブを使用することです私たちを提供することです、彼はあなた自身のドメイン名を持っている必要はありません。プロキシサーバーは、サーバー自身の裁判で逆転、私は知らないドアが、それは、独自のドメイン名を持って、私はそれを訪問し、アクセスドア通常のWebサイトには、任意の違いはありません。

リバースプロキシサーバーは、3つの主要な機能を持っている:
1は、要求の実際の処理とフロントエンドサーバーのサーバーの統合として使用することができます;
2.負荷分散を行うことができ
、要求を転送3.例えば、処理するために別のサーバーにリソース要求の種類を転送することができます。

CDN 5.
CDNは、実際には、特別なページキャッシュサーバクラスタであり、彼の通常のクラスタの複数ページのキャッシュサーバは、その主な保管場所と方法ビット特殊な割り当て要求と比較します。CDNサーバは要求は、ノードがデータを取得し、最も適切なCDNサーバに割り当てられます後、ユーザ要求を受信したときに、国全体に分散されています。例えば、中国ユニコムのユーザーはユニコムは、上海ユーザーは上海でノードに割り当てられたノードに割り当てられました。

何の要求メインサーバーから取得するか、直接バックキャッシュされたページになりますが存在しない場合は、各CDNのノードは、実際にページキャッシュサーバ、キャッシュリソースです。

ウェイCDN割り当て要求(負荷分散)あなたは良い割り当てるときにドメイン名を解決するために、専用のCDNのDNSサーバーを使用することです。試験は、特定のドメイン名にCNAME DNSれ、その後ドメイン名は、専用サーバに解決ISPにおける一般的な慣行は、チャネルに対応するCDN CDNノードを解決します。図に示すように。

 

第二段階は、CDNのDNSサーバがターゲットドメインのDNS CNAMEレコードのCDNサーバーにNSレコードのポイントを使用する必要があります訪問することです。各CDNのノードは、複数のサーバをクラスタ化します。

6.基本的な最適化
そのアーキテクチャの前では、すべての導入のインフラフロントに基づいています。多くの場所では、伝送ネットワークをスピードアップすることができれば、それはシステム全体が改善されるようになります、ネットワークを介してデータを送信する必要があります。

 

7.データベース・クラスタリングとデータベースのハッシュテーブル

大規模なサイトでは、これらのアプリケーションは、その後、頻繁にアクセスさに直面して、データベースを使用する必要があり、複雑なアプリケーションであり、データベースのボトルネックは、データベースがすぐにアプリケーションを満たすことができなくなり、すぐに明らかにされるので、我々はデータベースを使用する必要がありますクラスタハッシュテーブルまたはライブラリ。

データベースクラスタの面では、多くのデータベースは、独自のソリューションを持って、オラクル、Sybaseの他のものは、一般的にMySQLのマスタ/スレーブが提供する非常に良いプログラムを、持っている同様のプログラムである、あなたがDBの種類を使用し、対応を指しますソリューションを実現することができます。

構造における上記データベースクラスタに、拡張のコストは、DBタイプの使用を制限する条項の対象となり、私たちはシステムアーキテクチャを改善検討するアプリケーションの観点から必要、データベーステーブルハッシュは、一般的に使用され、最も効果的な解決策。我々は、異なるモジュールが異なるデータベースまたはテーブルに対応し、機能モジュールを分離するために、アプリケーションとビジネスアプリケーションやデータベースをインストールし、その後、そのようなユーザ・テーブルとしてページや機能上の特定の戦略も小さいハッシュデータベースによれば、低コストでリフトシステムのように、性能、ハッシュテーブルのユーザーIDに基づいて行われ、優れた拡張性を備えています。捜狐は、フォーラムは、構成ファイル内のプレートとID、最終的に簡単な構成に応じて、データベースとテーブルをハッシュするデータベース別のポストに、このような構造は、ユーザフォーラム、設定、および他の情報を使用して、ユーザをポストすることですそれは、低コストのサプリメントを追加し、いつでもシステムは、データベース・システムのパフォーマンスに来ることができます。

8.まとめ
サイトアーキテクチャの全体の進化は主にビッグデータとこの2つの問題の高い同時実行を中心に展開し、溶液は、キャッシュと多目的リソースタイプに分かれています。主にこのようなマルチバンクとして、それはリソース要求と要求の両方のタイプを扱う単一のリソースを処理する完全な連携を複数に分割することができる多くのリソースのために、マルチバンク(マルチメモリを含む)マルチリソース、マルチネットワーク、マルチCPUを参照しマルチCPUおよびクラスターに分布単離し、CDN静的リソースとマルチネットワーク。私たちはアーキテクチャの全体的なアイデアを理解すれば、進化の本質をキャプチャする、と彼はまた、より良いアーキテクチャを設計することがあります。

 

その他の簡単な要約:

まず第一に、私たちは問題があるまで、唯一の唯一のISMすることができ、他の人のソリューションのために、本当に理解していない場合は、最初に、明確な考えを持っている必要があります全体を判断してはいけないと考えています。

彼らは完全に別の子ではあるが、データかつ並行性の高い大量のは、一枚で、多くの場合でも、その事です。データベースが巨大であるに純粋な大量のデータは、データを参照し、それが同時高トラフィックのデータベースおよびサーバを含むことを指します。

それは大量のデータがデータベース内にあるので、そこで問題は、ある、どのようにそれを行うには?問題を解決するために、我々は最初の問題が何であるかを知っている必要があります!だから、大量のデータは私に何の問題のようなものを与えるのだろうか?

大規模なデータ検索の問題を変更するための追加や削除よりも何に起因する問題が、また問題だものに加えて?今、セキュリティ上の問題をもたらすことはできない(顔をプレイし、実際にセキュリティ上の問題があるかもしれません)

1回のスローデータベースアクセス

2アップデートが遅い挿入し、この問題は、サブサブテーブルのライブラリを解決することができます

データベースへのアクセスが遅い問題を解決するために遅いので、データベースにアクセスするにはいくつかの方法がありますが、ロジックの場合は、それを可能にするためにデータベースにアクセスすることはできませんか?

1使用キャッシュ

2使用静的なページ

彼らは、データベースにアクセスするためにエスケープしていない、と我々は、データベースを最適化するので、

3最適化されたデータベース(などの構成パラメータ、インデックスの最適化は、SQLの最適化など、非常に大規模な内容を含んでいます)

データベース内の4つの別々の活性データ

5つの別々の読み取りおよび書き込み

6バッチを読み出して遅延を変更します。

データベース中の7つのを使用する検索エンジンのデータ。

技術を使用して8のNoSQLとのHadoop。

9つの分割操作;

 

並行性の高いソリューション

実際には、この問題は、上記の議論に大量のデータと組み合わせる必要があり、どのような状況下で、その高い同時実行があるでしょうか?通常のトラフィックはもちろん、相補的であり、より多くのそれに格納された対応するアクセスデータ、よりその後、通常より大きな、比較的大きくなければなりません、ちょうどそのようなここでは12306、高い同時実行フェーズとして、必要なように、また場合がありますそのデータよりも、すでに大量ではありません。だから、通常シェレメチェボはそれを解決する方法?サーバーおよびデータベースにここにかかわる問題だから、その両方を最適化することから、

クラスタリング、ロード・バランシングを行うことですWebサーバの数が1増加します。サーバがタスクを完了することができないので、それは少数の多目的で、いくつかは十分な部屋ではありません

 第二の溶液につながる前に、それはどういう意味いくつかの最適化を行うことができ、データベース・サーバーへの追加はありませんか?もちろん、そこに

1.1ページキャッシュ

1.2 CDN

1.3リバースプロキシ

1.4アプリケーションと分離静的リソース(例えば、もっぱら一緒に別々にダウンロードするリソースとして、このサーバーは、高帯域幅を提供するために)

2データベースサーバの数を増やす、同じクラスタを行い、負荷分散を行います。

 

 

大容量データのためのソリューション

1使用キャッシュ

大量のデータへのアクセスが遅いにつながっているので、多くのことを補完、それは、より高い同時実行の問題を解決するために使用されるキャッシュの使用と比較され、簡単に高い同時実行の問題の深刻さにつながり、そしてデータベースは、一般的にWebアクセスであるため、ボトルネックは、私たちはキャッシュがあり、ビジネス・ロジックは、このように許可された場合には、データベースの操作を避けるようにしてください。必要なデータがたびにパフォーマンスのデータベース不要な廃棄物を読んで、アクセスを高速化することなく、メモリに保存されている---これは、キャッシュによってもたらされるメリットです。キャッシュとキャッシュ管理ソフトウェアの選択は、それが何であるかに注意を払うときに使用する必要がありますか?

2つの静的なページ---説明したくない、それを説明するものは何もありませんか?

3データベースの最適化

3.1データベースのテーブル構造が関与します

データ型の3.2セレクション

3.3 SQLの最適化

3.4索引チューニング

3.5コンフィギュレーションの最適化

あまりにも多くの注意を払う必要があり、別の章の観点を考え出す必要があります

データベース内の4つの別々の活性データ

なぜそれを分離?私はこの問題は、実際の環境それに遭遇したことを言います!いくつかのフィールド、テーブルのみ10とテーブルがあり、データの130万がありますが、データのサイズは、それ自体には非常に合理的ではありません5Gに、ので、少しデータが多数を保存するためにいくつかのフィールドに大量のデータを取りました文字列(例えば、記事の内容、など)、テーブルを検索するたびに、コンテンツのこれらの大きな分野の中で最もよりも少ないですが、はるかに遅いログで、その結果、より長い時間がかかるが必要です。その後、我々は、テーブルの垂直分割を考慮することができ、アクティブなデータから分離され、これは非常にアクセスを高速化することができます

5つの別々の読み取りおよび書き込み

 

 

リンクhttp://blog.csdn.net/u012373815/article/details/71435926

http://blog.csdn.net/u014723529/article/details/41892001


----------------
免責事項:この記事では、元の記事には、「_ _最初からやり直す」CC 4.0 BY-SAの著作権契約、複製、元のソースのリンクを添付してくださいに従ってくださいCSDNブロガーでありますそしてこの文。
オリジナルリンクします。https://blog.csdn.net/sanyaoxu_2/article/details/78992113

おすすめ

転載: www.cnblogs.com/zhangzt/p/11565884.html
おすすめ