システムアーキテクチャの最適化のシングルポイントの可用性とパフォーマンス

まず、起源の需要

明らかに、このアーキテクチャは、高可用性を必要とし、なぜシステムの単一のポイントでしょうか?

回答:デザインのシングルポイントマスター、します、ではない、時には大幅に簡素化システムの設計に言及するシングルポイントを回避することはできません

 

シングルポイントでのシーンがあるでしょうか?典型的な高可用性のインターネットインフラを初めて目。


典型的な高可用性のインターネットインフラストラクチャ:

(1)クライアント層、この層は、nginxの外部ネットワークIPを取得するには、ブラウザまたはAPP、アクセスするための最初のステップDNSサーバ、ドメイン名です

(2)層をロードバランシング、nginxのは全体のサーバへの入り口である、それは仕事のバランスをとるリバースプロキシおよびロードする責任があります

(3)サイトレベル、Webサーバ層、典型的にTomcatまたはApache

(4)サービスレベル、サービスレベル、典型的にはダボ倹約またはバックエンドサービスのRPC呼び出しを提供します

(5)データ層、典型的には、書き込みアーキテクチャDBのマスターコピーから分離し、キャッシュDBを備え、

このインターネットアーキテクチャでは、サイト層は、サービス層、ライブラリーからのデータベースは、高可用性を確保するために、冗長性によるものではなく、少なくともすることができます

(1)nginxの層は、潜在的な単一点であります

(2)書き込みライブラリマスタデータベースはまた、潜在的な単一点であります

 

別の例のGFS(Googleのファイルシステム)アーキテクチャとして。


ので、いくつかの役割があるGFSシステムアーキテクチャ:

(1)クライアント、エンドを開始を呼び出して読み取りと書き込みのファイル

(2)マスター・サービスの単一のポイントである、それはグローバルなキャリア、マスターファイルのメタ情報を持っています

(3)チャンク・サーバー、ストレージ・ファイル・サーバの実際の量

このシステムは、マスターは、サービスの単一のポイントである、地図、軽減システムは、マスター、一点の類似した全体的な調整の役割を担っています。

 

システムアーキテクチャ設計、nginxの、DB-マスター、サービスのこのような単一ポイントのGFS-マスターのように、問題があるでしょう、それを最適化するためにどのような解決策は、これは、この記事で説明した問題です。

 

第二に、シングル・ポイント・アーキテクチャの問題があります

一般的にはシングルポイントシステム、二つの大きな問題があります。

(1)非可用性:それは単一点障害のマスターイベントであるので、サービスが影響を受けます

(2)パフォーマンスのボトルネック:それは、単一のポイントであるので、優れた拡張性を持っていないが、サービスのパフォーマンスは常に限界、多くの場合、システム全体の性能を制限され、パフォーマンスのシングルポイントの上限があります

 

次に、上記の二つの問題を最適化するために、どのような最適化の手段を見てみましょう

 

三、可用性の問題の影マスターの一点は、解決するために

シャドウマスターは、可用性のシングルポイントの問題を解決するために非常に一般的な技術ソリューションです。

「シャドウマスター」、名前が示すように、時に通常のサービスは、それがマスターに単一障害点だけシャドウマスターだ、シャドウマスターは、自動的にサービスを提供し続けるために、マスターになります。

シャドウマスターが、それは、高可用性の問題を解決することができ、およびフェイルオーバーが人間の介入なしに、自動的に行われますが、それは50%減少リソースのサービス利用の欠如で、業界では、頻繁に使用されるこの種を達成するために+ VIPの道をkeepalivedの高可用性シングルポイント

 


マスターへのGFS、例えば、通常のときマスター:

(1)クライアントがサービスを提供していない通常のマスター、シャドウマスターを接続します

(2)マスターおよびシャドウマスターの間の生存検出機構

(3)マスターシャドウマスターと同じ仮想IP(仮想IP)を有します

 


あなたはマスターの例外を発見した場合:

シャドウマスターが自動的にトップ・マスターになります、プロセスを確実にするために、仮想IPメカニズムは、発信者に対して透過的です

 

GFSとMapReduceのシステムのマスターマスターに加えて、nginxのは、高可用性を確保するために、同様の方法で使用することができ、メインライブラリのマスターデータベース(メインライブラリー)も、高可用性を保証するために同様に使用することができますが、いくつかの場所は、細部に注意を払う必要があります。


従来のマルチマスタ、読み取りおよび書き込み別々のDBのアーキテクチャから、高可用性が唯一のライブラリを読ん保証することができ、高可用性は、書き込みライブラリを保証するものではありません、高可用性書き込みライブラリーを確保するために、あなたはまた、上述したシャドウマスターを使用することができますメカニズム:


(1)セット二つの主要なライブラリビス互いに同期マスタモード

(2)メイン図書館は通常のみサービスを提供するには、シャドウマスターがマスターデータに同期されません、意味します

(3)異常、シャドウマスターライブラリは、メインにサービスを提供し続け、他の主要な仮想IPライブラリへの漂流しました

データ同期が完了していない場合、フローはシャドウマスターに接線方向であり、必要なデータベース、データ同期遅延の特殊な性質のため、そのノートは、データ矛盾の少量を引き起こし得ます。

 

単一ポイントとの相互作用を減少させる4つ、システム最適化のコア方向の一点

我々は性能限界は、単一点、性能の一点がある知っているので(例えば、マスターGFSに)単一ポイントと相互作用するように低減、システムのボトルネックになることがあり、それはシステムの最適化コア方向の一点となっています。

単一のポイントとの相互作用を減らすためにどのように、2つの一般的な方法は、ここに述べました。

一括書き込み

一括書き込みはシングルポイントの性能を向上させる一般的な方法です。

例えば、単一点生成例のデータベース書き込み「IDジェネレーター」を使用して行います。


(1)ビジネス側のニーズのID

(2)単一点データベースライター生成自動increament IDと戻りIDを使用して

これは非常に一般的な例であるので、便利な単一のポイントを、書くためにデータベースの特性を使用してIDを、生成された多くの企業は、追加の開発コストは、非常にハンサムなプログラムではありません。

潜在的な問題:同時発生IDの上限、書き込み性能に応じて、単一のポイント・データベースを制限します。

どのようにパフォーマンスを向上させるには?一括書き込み

 


(1)サービスの中央には、データベース100からそれぞれのIDを取り出します

(2)ビジネス側のニーズのID

(3)直接リターンサービスID 100 1、100は分散し、データベースにアクセスして

その結果、各割り当て100は、データベースを記述します、性能が割り当てID 100回を高めると考えることができます。

 

クライアント側のキャッシュ

クライアント側のキャッシュは、単一点法との相互作用の数であり、システム全体のパフォーマンスが低下する改善。

または例としてGFSファイルシステムでは:


(1)GFSクライアントがアクセスshenjian.txtにクライアントを呼び出し、最初のローカルキャッシュをチェックし、欠場します

マスターでのアクセスファイルに(2)クライアントは、マスターはchunk3にクライアントを告げるところ、尋ね

その後、(3)chunk3に記録されているローカル・キャッシュ・shenjian.txtを格納するためのクライアント、および読み取りと書き込みのファイル

対応するレコードを検索する(4)ローカルキャッシュからのアクセスファイルに次のクライアントは、あなたが直接チャンク・サーバーにアクセスすることができ、マスターを要求する必要はありません。ファイルは、「ここにいない私のファイルに」言いたいこと、chunk3リターンクライアント、クライアントをシフトして、マスターにアクセスしている場合は、サーバーのファイルが置かれている尋ねます。

 

経験によると、このタイプのキャッシュは99.9%に(自動的に移行するので、ファイルが小さい確率事象である)おそらく、非常に、非常に高いヒット、およびマスターとの相互作用の数は1000回を減少させるであろう。

 

第五に、水平方向の拡大は、シングルポイントシステムの性能を向上させる良いプログラムです

すべての後に一括書き込み、クライアント側のキャッシュ、単一のポイントは、スタンドアローン、または性能限界を持っているかは関係ありません。

理論的には、単一のポイントを排除するために、横方向に拡張する方法を見つける、無限系のシステムを改善することができます。

例えばnginxのでは、それはどのように水平に拡張するには?


DNS解決の最初のステップは、唯一のnginxの外部ネットワークIPなぜを返すことができますか?答えは何も明らかにされ、「DNSのポーリング」の技術サポートDNSサーバnginxのは、私たちが層のバランスをとる拡張nginxの負荷のレベルを達成することができそうという、異なる外部ネットワークIPを返しません。

 


DNSサーバ部、IPドメイン複数の、DNS解決要求が、ポーリングにIP異なるが返されるたびに設定することができ、nginxの水平展開、拡張ロードバランシング層全体の性能を達成することができます。

 

データベースライブラリを書くの単一のポイントは、大量のデータの場合には、あなたは書き込み性能を向上させるために、レベルを分割することができ、同じ理由です。

 

残念ながら、全てのビジネスシナリオが水平に分割することができ、例えば、スパイクビジネスの数は、商品が小さくてもよく、データベース内のデータの量は、(書き込み性能スパイクシステムの全体的なレベルを高めるために分割することができませんライブラリ100は右、記録することはできません?)。

 

VIの概要

ここでの議論の今日の話題は、コンテンツの多くは、ほとんどがあることを覚えておくことは、少なくともいくつかのポイントを覚えていないことを推定、深く有罪貴重な時間を取って:

(1)シングルポイントシステムの問題が存在する:可用性の問題、パフォーマンスのボトルネック

(2)シャドウマスターは、システムの可用性ソリューションの単一点の問題に対する一般的な解決策であります

(3)還元の単一ポイントと相互作用する、それはシステムの最適化、一般的な方法の一括書き込み、クライアント側キャッシュの単一点の芯方向の存在であります

(4)膨張のレベルは、シングルポイントシステムの性能を向上させる優れたプログラムです。

公開された136元の記事 ウォンの賞賛6 ビュー1512

おすすめ

転載: blog.csdn.net/weixin_42073629/article/details/104603514