B / S構造の開発履歴

成熟した大規模なWebサイト(淘宝網、Jingdongなど)のシステムアーキテクチャは、完全な高パフォーマンス、高可用性、セキュリティなどの特性を持つようには設計されていません。ユーザー数の増加とビジネス機能の拡大に伴って常に進化し、改善されます。このプロセスの間に、開発モデル、技術アーキテクチャ、およびデザインアイデアに大きな変化が起こり、技術スタッフでさえ数人から部署または製品ラインにまで成長しました。したがって、成熟したシステムアーキテクチャはビジネスの拡大に完璧であり、一晩で達成されるわけではありません。Tencentなどの大量の商品情報の検索、注文、支払いを解決するために、Taobaoなどの異なるビジネス特性を持つシステムに独自の焦点があります。何億人ものユーザーのリアルタイムメッセージ送信を解決するために、Baiduは大量の検索リクエストを処理する必要があります。それらはすべて独自のビジネス特性を持ち、システムアーキテクチャも異なります。それでも、これらのさまざまなウェブサイトの背景から一般的な技術を見つけることもできます。これらの技術と方法は、大規模なウェブサイトシステムのアーキテクチャで広く使用できます。大規模なウェブサイトシステムの進化を紹介して、これらの技術を理解しましょう。そして、という意味です。
1.初期のサイトアーキテクチャ

初期のアーキテクチャは、図に示すように、アプリケーション、データベース、ファイルサーバーデプロイさます

2.アプリケーション、データ、ファイルの分離
ビジネスの拡大に伴い、サーバーはパフォーマンス要件を満たすことができなくなりました。そのため、アプリケーション、データベース、およびファイルを別々のサーバーに展開し、達成するサーバーの目的に応じて異なるハードウェアを構成します。最高のパフォーマンス効果。

3番目に、キャッシュを使用してWebサイトのパフォーマンスを向上させます。
ハードウェアはパフォーマンスを最適化しますが、ソフトウェアによってパフォーマンスも最適化します。ほとんどのWebサイトシステムでは、キャッシュテクノロジーを使用してシステムのパフォーマンスを向上させます。キャッシュの使用は、主にホットデータの存在が原因です。一部のウェブサイトへのアクセスは28の原則(つまり、アクセス要求の80%、最終的にはデータの20%に該当)に準拠しているため、ホットデータをキャッシュし、これらのデータのアクセスパスを減らし、ユーザーエクスペリエンスを向上させることができます。

キャッシュを実装する一般的な方法は、ローカルキャッシュと分散キャッシュです。もちろん、後で説明するCDN、リバースプロキシなどもあります。ローカルキャッシュは、その名前が示すように、アプリケーションサーバー上のデータをローカルにキャッシュすることで、メモリまたはファイルに格納できます。OSCacheは、一般的に使用されるローカルキャッシュコンポーネントです。ローカルキャッシュの特性は高速ですが、ローカルスペースが限られているため、キャッシュされるデータの量も制限されます。分散キャッシュの特徴は、大量のデータをキャッシュできることと、拡張が非常に簡単であることです。ポータルWebサイトでよく使用されます。速度はローカルキャッシュほど速くありません。一般的に使用される分散キャッシュは、MemcachedとRedisです。
第4に、クラスターを使用して
アプリケーションサーバーのパフォーマンスを向上させるアプリケーションサーバーは、Webサイトへの入り口が多数の要求を処理するため、アプリケーションサーバークラスターを通じて要求の数を共有することがよくあります。アプリケーションサーバーの前に負荷分散サーバーを配置して、ユーザーの要求をスケジュールし、分散戦略に従って複数のアプリケーションサーバーノードに要求を分散します。

一般的に使用される負荷分散技術のハードウェアはF5で、価格は比較的高く、ソフトウェアはLVS、Nginx、HAProxyです。LVSは4層のロードバランシングであり、ターゲットアドレスとポートに従って内部サーバーを選択します。Nginxは7層のロードバランシングであり、HAProxyは4層と7層のロードバランシングをサポートします。メッセージの内容に従って内部サーバーを選択できるため、LVS配信パスはNginxよりも優れています。 HAProxyはより高いパフォーマンスを発揮しますが、NginxとHAProxyはより構成可能です。たとえば、動的および静的な分離に使用できます(要求メッセージの特性に基づいて、静的リソースサーバーまたはアプリケーションサーバーを選択します)。
5番目に、データベースの読み取りと書き込みの分離とサブライブラリサブテーブル
ユーザー数が増えると、データベースが最大のボトルネックになります。データベースのパフォーマンスを向上させる一般的な方法は、読み取りと書き込みの分離とサブテーブルです。名前が示すように、読み取りと書き込みの分離は、データベースを読み取りライブラリに分割することですまた、ライブラリを作成して、メイン関数とスタンバイ関数を介してデータの同期を実現します。サブライブラリとサブテーブルは、水平セグメントと垂直セグメントに分割され、水平切り替えは、ユーザーテーブルなどの大きなデータベーステーブルを分割することです。垂直セグメンテーションは、ユーザービジネスなどのさまざまなビジネスに応じて切り替えることです。商品ビジネスに関連するテーブルは、さまざまなデータベースに配置されます。

6. CDNとリバースプロキシを使用して、Webサイトのパフォーマンスを向上させます。
サーバーがすべて成都のコンピュータールームに配置されている場合、四川のユーザーはアクセスが速くなりますが、北京のユーザーは遅くなります。これは、四川と北京は、チャイナテレコムとチャイナユニコムのそれぞれ異なる先進地域に属しています。北京のユーザーは、インターネットルーターを経由する長いパスを介してインターネットサーバーにアクセスする必要があります。戻りパスは同じであるため、データ転送時間は比較的長くなります。この状況では、CDNが問題の解決によく使用されます。CDNはデータの内容をオペレーターのコンピュータールームにキャッシュし、ユーザーはアクセス時に最初に最寄りのオペレーターからデータを取得するため、ネットワークアクセスのパスが大幅に削減されます。より専門的なCDNオペレーターには、LanxunおよびWangsuが含まれます。
リバースプロキシは、Webサイトのコンピュータールームに配置されます。ユーザーの要求が到着すると、リバースプロキシサーバーが最初にアクセスされます。リバースプロキシサーバーは、キャッシュされたデータをユーザーに返します。キャッシュされたデータがない場合、アプリケーションサーバーは引き続きデータを取得します。また、データ取得のコストも削減されます。リバースプロキシにはSquid、Nginxがあります。

7、分散ファイルシステムを使用する

ユーザーは日々増えており、ビジネス量は増えており、生成されるファイルはますます増えており、単一のファイルサーバーでは需要を満たせなくなっています。分散ファイルシステムのサポートが必要です。一般的に使用される分散ファイルシステムにはNFSがあります。

8、NoSqlと検索エンジン
を使用大規模なデータクエリの場合は、nosqlデータベースと検索エンジンを使用してパフォーマンスを向上させます。すべてのデータをリレーショナルデータに配置する必要はありません。一般的に使用されるNOSQLはmongodbとredisであり、検索エンジンはluceneです。

9、アプリケーションサーバービジネスを分割する
ビジネスがさらに拡大するにつれて、アプリケーションは非常に肥大化するため、Baiduなどのアプリケーションビジネスをニュース、Webページ、写真、その他のサービスに分割する必要があります。各ビジネスアプリケーションは、比較的独立したビジネスオペレーションを担当します。企業はメッセージを介して通信したり、データベースを共有したりします。

10、分散サービスを構築する
この時点で、各ビジネスアプリケーションがユーザーサービス、注文サービス、支払いサービス、セキュリティサービスなどの基本的なビジネスサービスを使用することがわかりました。これらのサービスは、各ビジネスアプリケーションをサポートするための基本要素です。これらのサービスを抽出し、部分的なサービスフレームワークを使用して分散サービスを構築しました。淘宝網のダボは良い選択です。

まとめ
大規模なWebサイトの構造は、ビジネスニーズに応じて継続的に改善され、さまざまなビジネス特性に応じて具体的な設計と考慮が行われます。

元の記事を51件公開しました いいね4 ビジター7893

おすすめ

転載: blog.csdn.net/u012174809/article/details/103070733