大規模なインターネット・ソフトウェア・システムの機能
- 高並行性、高流量
- ハイアベイラビリティ
- 大規模なデータ
- 広く分布しているユーザーは、ネットワークの複雑さ
- 悪いのセキュリティ環境
- 急激な変化の需要、頻繁にリリース
- プログレッシブ開発
大規模な開発サイトアーキテクチャの進化
- 初期段階:単一のサーバー内などのすべてのリソースのアプリケーション、データベース、ファイル、
- アプリケーションサービスおよびデータ・サービスの分離
- ローカルキャッシュおよびリモートキャッシュ:Webサイトのパフォーマンスを向上させるためにキャッシュを使用します
- 同時処理サイトの能力を向上させるために、アプリケーション・サーバー・クラスターを使用します
- データベースの別々の読み取りと書き込み
- リバースプロキシやCDN加速度応答ウェブサイトを使用します
- 分散ファイル・システムと分散データベース・システムを使用して
- そしてNoSQLの検索エンジンを使用して
- ビジネススプリット
- 分散サービス
サイトのアーキテクチャモデル
- 層状
アプリケーション層、サービス層、データ層
- 分割
プレスサービススプリッタは、論理的または物理的にも独立して展開することができます。
- 分散
分散アプリケーションやサービス、分散型静的リソース、および分散ファイルシステム、分散コンピューティング、分散構成、分散ロック、分散ファイル
- クラスタ
同じアプリケーションサーバの展開が共同で負荷分散装置を通してサービスを提供するために、クラスタを構成するよりも、もっと
- キャッシュ
CDN、リバースプロキシ、ローカルキャッシュ、分散キャッシュ
- 非同期な
それを行う非同期で共有データを書き込むことにより、各段の間に、動作フェーズに分割されます。
特徴:、システムの可用性を向上させ、サイトのレスポンスを高速化、ピーク時の同時アクセスを排除
- 冗長性
サーバーの冗長運転、データの冗長性:サーバーがダウンしたとき、あなたは他のサーバに上のサービスとのデータ転送にアクセスすることができます
- 自動化
公開プロセスの自動化、自動化されたコード管理、自動テスト、自動化されたセキュリティテスト、自動展開、自動監視、自動アラーム、自動フェイルオーバー、自動降格、リソースの自動割り当て
- セキュリティ
一般的なセキュリティ攻撃:XSS攻撃、SQLインジェクション、CSRF攻撃
大規模なサイトのアーキテクチャのコア要素
- 演奏
関連する指標:応答時間、同時、特定のパフォーマンスカウンタ(説明サーバ・オペレーティング・システムまたはいくつかのパフォーマンスメトリックデータ)
- 可用性
可用性インジケータ
分類と重みを障害
- 柔軟性
継続的に成長しているデータのストレージ要件への上昇圧力と同時ユーザー・アクセスを容易にするために、クラスタにサーバーを追加することによって、
- 拡張性
ときに新しいサイト事業製品、透明既存の製品には影響を達成することはできません、既存のビジネス機能の任意の変更または改変することなく、新しい製品ラインよりも少しすることができ
- セキュリティ
標準サイトのセキュリティ機関の測定:現在および潜在的な攻撃や盗難の手段のために、信頼性の対処戦略がある場合。
パフォーマンスを測定するための方法
- パフォーマンステスト
初期計画の期待のためにシステムのパフォーマンスをアップグレードするには、システム上の一定の圧力、リソースセクション許容範囲の検証システム、それがパフォーマンスのボトルネックを達成できるかどうか。
- 負荷試験
システムは、アイテムまたは性能指標システムの数が安全閾値に到達するまで圧力を適用するために同時要求を増加し続けます。
- ストレステスト
安全な負荷を超えると、システムは、システムがクラッシュするまで圧力をかけ続けて、または任意の要求を処理することはできません。
- 安定性試験
システムは、システムが安定していることを確認するために、時間の長い期間のためのシステムの実行を行うために、特定のハードウェア、ソフトウェア、ネットワーク環境、特定のビジネス圧力へのシステム負荷の下でテストされました。
WEBフロントエンドのパフォーマンスの最適化
- ブラウザアクセスの最適化
意味:、JavaScriptがページの下部に、クッキーが送信を減らす圧縮、上部のCSSのページを有効にするには、ブラウザのキャッシュを使用してHTTPリクエストを減らします
- CNDが加速します
画像、文書、CSS、スクリプトのスクリプト、静的なWebページなどの一般的なキャッシュ静的リソース
- リバースプロキシ
役割:Webサイトのセキュリティ、パフォーマンスを向上させるためのシステム容量、高並行性を向上させるために、クラスタを構築するために、ロードバランサを介してWeb要求を加速するためにキャッシュを設定します。
アプリケーションサーバの最適化
- 分散キャッシュ
ウェブサイトのパフォーマンスの最適化第一法則:優先順位のパフォーマンスを最適化するためにキャッシュを使用します
- 非同期操作
-非同期メッセージの呼び出しキューイング後の事を遅らせるべき行うことができるものを。
- クラスタを使用します
過度の圧力と遅い応答に単一サーバーの負荷を避けます
- コードの最適化
焦点を当てる:マルチスレッド、資源の再利用、データ構造、ガベージコレクションなど(ステートレスオブジェクトのデザインオブジェクトをしません、ローカルオブジェクト、ロックを使用してリソースへの同時アクセスを使用)
- ストレージパフォーマンスの最適化
、SSD、B +ツリーvs.LSMツリー対ハードメカニカルRAIDvs.HDFS