システムアーキテクチャの概念やアイデア2

nginxの長所と短所:
  Apacheなど良いとして機能nginxの、
  ユーザに応答してnginxの絶対ボスです。
  したがって、一般にリバースプロキシとして使用する実際の用途でNginxは、以下に示すように:
  Apacheの動的コンテンツ・プロバイダは、MySQLとの通信。
  注意:動的なシナリオでは、CPU 2は、異なるスクリプトロジックに、テーブル、メモリ4Gサーバーを持っている、これは一般的にサーバ1000、それはかなり良いですあたりの応答を意味します。
Nginxは:ユーザーの応答速度を向上させるためなど、CSS、JPG、PNG、次のような静的コンテンツプロバイダとして。
  注意:レスポンスでまだは写真(5-10K)写真、nginxの、ユーザーのボトルネックに応じて、毎秒5000万への要求、今回の応答がないサーバ、およびそれはあなたの帯域幅とディスクの速度も場合があります。
FTP:一般的にフォーラムのユーザーを使用してデータをアップロードするために使用され、FTPのサポートFTPのアップロードとダウンロードがHTTPであることを確認するために通常必要です。

  これらのエンドユーザーのために、彼は唯一のページを見ました。フロントエンドのリバースプロキシとしてnginxのそれ自体でその利点は、Webサーバであり、HTTPプロトコルを解析することができるので、動的および静的画像のスクリプトは、CSSスタイルシートは、ウェブの使用ので、理解されていますリバースプロキシサーバとして、それは完全に達成可能書き換えアドレス、URL書き換え(URL書き換え)とリソースのリダイレクト、およびその他の操作です。フロントエンドは最高とシンプルであるようにそれを使用しています。

  

次の構造を示すデザインは、次のとおりです。
トラフィックサイトが非常に大きい場合には、当然のことながらモデル図は、デザインが50,000ネットワークによって複雑になる満たすことができません。:[同時50000秒すなわち50,000の同時要求は、1日は86400秒、応答ごとに2秒であることを、日が21.6億訪問した]
  の両方のフロントエンドWebサーバーのキャッシュサーバの増加はの動的なネットワークを提供します」あなたが効果的にバックエンドWebサーバの圧力を低下させる、静的ページなどの動的なページをキャッシュできるようにします。
  「MySQLのプロキシ別々として効率的な処理性能のMySQLを達成するための読み取りおよび書き込み。あなたは、高可用性が必要な場合も彼2から作製することができます。
  MyISAMテーブルやInnoDBの1000は、毎秒の読み取りおよび書き込み要求を受け取り使用することは非常に困難であるかどうかのリンクスレッドプール、MySQLサーバを、使用しない「がMySQLサーバ。Webへのデータ接続が比較を超えているので、一度データ接続を送信されるデータの量が非常に大きいかもしれない。例えば:... FROMそれはあなたのデータの量を返す*データの100万行、SELECTでテーブルを照会下に、どのくらいのを想像してみてください。そのため、あなたは大幅Serverは、単一の圧力を共有することができるようにロードバランサを追加するために、サーバーを読む前に、それぞれのMySQLサーバの圧力を共有するためです。
  「Memcacheの:一部のデータは定期的に更新されないことは、あなたは応答速度を向上させるために、Memcacheの中にキャッシュされたこれらのMySQLのクエリの結果を使用することができます。たとえば:淘宝網の店は彼らの製品情報をアップロードしますが、一般的に、彼らは一度に良いお店を作成し、データのほとんどは、基本的な変更ではありません。これらのデータと同様のMemcacheにキャッシュすることができます。Memcacheのは、カスケード間の通信をサポートしていないため、Memcacheのは、非常に利用できず、キャッシュされたデータを共有することはできません。Memcacheのが壊れている場合、あなたは、新しいWebサーバのMemcacheの各点はキャッシュを再生成し、それを直接交換することができます。
  「XCacheとは:PHP4.0から、PHPは、PHPコンパイラの結果をキャッシュするPHPモジュールとしてXCacheとをインストールする必要があり、それはパフォーマンスのWebServerに影響を与えるだろう、実行するためにOPTファイルの後にコンパイルする必要があります。

  

    ユーザーが要求を送信したときNignxは、キャッシュサーバへの要求、これはシステムを起動するのは初めてであると仮定すると、キャッシュサーバがデータをキャッシュする必要は認められなかった、それは元のWebサーバーのバックエンドからデータを要求し、ユーザから要求されたWebサーバーの発見動的なコンテンツである、MySQLのプロキシにクエリを送信、MySQLのプロキシは、それが読み取りクエリであることが判明し、クエリはロードバランサに送られ、ロードバランサによってバックエンドMySQLサーバに要求を転送する責任があり、最終的なWebサーバーにデータを返し、その後、クエリ結果は、MySQLのプロキシに返されるMySQLのプロキシデータは、その後、Webサーバーに送信され、ユーザーに応答する前にWebサーバ、Memcacheの最初の結果にMySQLのクエリキャッシュ、それが簡単に素早くフォローアップするためのクエリを作成しますキャッシュサーバ、ユーザの要求に応じて、返されたページのキャッシュ結果の後にキャッシュサーバ。


設計図の構成は次のとおりです。
  「非同期メッセージの同期プラットフォーム、また、管理者をキューに言及:あなたの最初の設計サーバファーム、それぞれ最大応答サーバ500かどうかは、主に、キューバッファ内の多数の要求を管理するために使用されますリクエストが自分のバッファにビジー状態である場合の要求は、並行処理の量が急激に増加すれば、我々は、同時要求の数が多い、キューマネージャは、サーバのアイドル電流の状態をチェックしたときに、この問題を解決するために、キュー・マネージャーを使用することができますキュー、およびそのサーバーが応答するので、ユーザは、転送全負荷サーバーの分散を要求するたびに。これは、同時サーバーの数が多いが、サービス拒否を引き起こす防ぐことができます。キュー・マネージャーはありますRabbitMQの、zeromq、それはまた、簡単な接続プーリングとして理解することができます。システムが非同期モードを使用するのであればもちろん、あなたはまだ、キュー・マネージャの代わりにキャッシュサーバを使用することができます。

  「PHPクラスタ:いわゆるPHPは、実際のクラスタでは、唯一のPHP要求を処理する能力を提供し、サーバとして動作するようにApacheを使用し、およびFastCGI PHPの直接インストールしません。もちろん、それはまた、必要XCacheとあります。
    注意:唯一の動的および静的コンテンツの場合には別途ごPHPのクラスタを使用する前に。次の図では、それだけでは、静的なコンテンツを分離することです。だから、PHPのクラスタを使用します。

  「静的コンテンツサーバーは:どのように多くの写真淘宝網、このサイトのように、画像数Kの大きさは、その後、年のためにどのくらいのスペースを占めることになる。ここでは、静的なコンテンツサーバーは、ボリュームが大きすぎる画像が、あればある主な理由は、ユニットの多くを追加します、これは10年?淘宝網は10年で10Tの総容量は画像を保存する場合は、あなたの隣には、画像ライブラリの10Tで画像がどのように簡単ではありません見つけること、想像することができます!だから、絵はその後、キャッシュサーバのキャッシュが頻繁にアクセスすることができ、それがパフォーマンスを大幅に向上させることができます。
  [注:パレートルールも考慮すべき要因、100軒のショップ、最大20%の活性、80%が不活性です]

  

下图为CDN网络概况:
  CDN网络最为关键的两项技术:
  》智能DNS:将用户的请求直接发送到距离用户最近的缓存服务器上。
  》内容路由:当一个缓存服务器上没有用户请求的数据时,应该先到哪里去取数据。一般会先到各个缓存服务器上找,都没有在到原始服务器上找。
  》 NoSQL:主要为了解决像淘宝五一,十一这种抢购行为而被采用,因为后台的MySQL很难直接完成这么庞大的读写并发。而这时NoSQL就派上大用了,因为,NoSQL是运行在内存中的非关系型数据库,它们的效率是非常高的。假如就说抢购,我们完全可以使用NoSQL来实现快速响应小事务,如:一个商品卖出个数的快速计数并快速响应页面,快速动态更新剩余个数等等。
  redis:它工作在内存中,可以将自身数据同步到持久设备(磁盘)上,并且可将数据直接交给MySQL.它通常用于程序计数器,如微博中每天只要有人发一个评论或一条微博消息,则相应的计数值都会被修改,并显示。
  mongodb:对众多事务,并且是写操作的应用来说,使用monogdb是一个不错的选择。

    

更完善的系统架构:

  1》在实际的环境中,我们不可能让每台服务器自己保存自己的日志,因为这是非常不便于集中管理的。假如将所有Server的日志集中管理那么像如此大的系统,每天产生的日志量可能就会达到100G以上。并且我们还希望可以对这些日志进行分析,并快速得到结果。那么就必须使用到分布式系统Hadoop了。它就是为了方便管理日志,分析日志,挖掘数据,就产生下下面这整套系统。而Hadoop是完成数据分析最为核心的分布式系统。但它的缺点是,不能实时分析数据,它是一种异步数据分析系统。因此,对于实时性的数据分析它就无能为力了。Hadoop是开源界根据google发表的关于分布式系统的论文而开发出来的,在Google内部已经开发出了自己的实时的分布式系统,在开源界实时性的分布式系统也正在开发中。目前尚不明确。

 这种分布式监控系统有什么用?
  就比如:五一抢购,若采用这种系统,我们可以实时分析出到目前为止,那个商户的交易额最高,那个商户的商品最热销,那个商户的的人气最高等等....
2》在下面这个系统结构中:
  我会还需要考虑到,若下面的Server都是物理机,那么其故障迁移,故障处理,及故障恢复都将变的非常困难。这时,我们就需要借助云来实现方便我们管理,我们可以将物理机都做成高可用,接着,我们将I/O需求不大业务都迁移到虚拟机上,这样我们就可以实现快速故障处理。并且让我们的系统更加模块化,所谓模块化:即将我们的前端Web Server做到一个虚拟机集群中,并让他成为一个云模块。我们的MySQL集群也一样,对外都只提供连接接口即可,至于后端如何实现就不要管了。当然我们的hadoop是不能放到虚拟机中的,毕竟虚拟机的I/O能力是很弱的,而hadoop需要非常大的I/O性能。

  

おすすめ

転載: www.cnblogs.com/wn1m/p/11285142.html