インタビューの質問

1. Webサイトの同時実行性とトラフィックの増加を解決するにはどうすればよいですか?

1)HTMLページ静的

  アクセス頻度は高いですが、コンテンツの変更はわずかです。WebサイトのHTML静的ソリューションを使用して、アクセス速度を最適化してください。また、コミュニティに投稿や記事をリアルタイムで静的に投稿し、更新があったときにそれらを再静的化するために使用される戦略でもあります。

利点:

  •   サーバーの負担を軽減します。
  •   ページを開く速度を高速化します。静的ページはデータベースにアクセスする必要がなく、動的ページに比べて開く速度が大幅に向上します。
  •   多くの検索エンジンは、静的なページを含めることを優先し、すぐに含めるだけでなく、含めることもできます。これは、検索エンジンで簡単に見つけることができます。
  •   HTML静的ページは、プログラム関連の脆弱性の影響を受けず、攻撃が軽減され、セキュリティが向上します。

2)イメージサーバーとアプリケーションサーバーの分離

  現在、多くのウェブサイトで多くの写真が使用されており、写真はウェブページ送信の主要なデータ量であり、ウェブサイトのパフォーマンスに影響を与える主な要因でもあります。したがって、多くのWebサイトは画像ストレージをWebサイトから分離し、画像を格納する1つ以上のサーバーを構築し、仮想ディレクトリに画像を配置し、Webページ上の画像はURLアドレスを使用してこれらのサーバー上の画像をポイントします、ウェブサイトのパフォーマンスが大幅に向上します。

利点:

  •   サーバーのパフォーマンスと安定性を向上させるために、リソースを消費するWebサーバー別の画像サービスのI / O負荷を共有します。
  •   イメージサーバーを最適化して、イメージサービス用のターゲットキャッシングソリューションを特別に設定し、帯域幅コストを削減し、アクセス速度を向上させる機能。
  •   画像サーバーを増やして画像スループットを向上させることにより、Webサイトのスケーラビリティを向上させます。

3)キャッシュ

  ユーザーキャッシュ、情報キャッシュなどを含むキャッシュを使用してみてください。キャッシュに多くのメモリを費やし、データベースとのやり取りを大幅に減らし、パフォーマンスを向上させることができます。

  頻繁なデータベースアクセスを減らすことができれば、システムに大きなメリットがあります。たとえば、アイデアビジネスシステムの製品検索。特定のキーワードの製品が頻繁に検索される場合、製品リストのこの部分はキャッシュ(メモリ内)に格納されていると見なすことができるため、毎回データベースにアクセスする代わりに、パフォーマンスが大幅に向上します。

4)ミラー

  ミラーリングは冗長性の一種であり、1つのディスク上のデータのコピーは、ミラーとして別のディスク上にまったく同じように存在します。

5)負荷分散

  Webサイトへの同時アクセスが多いシナリオでは、負荷分散テクノロジ(負荷分散サーバー)を使用して、アプリケーションの複数のサーバーで構成されるサーバークラスターを構築し、複数のサーバーに同時アクセス要求を分散して処理することで、負荷による単一サーバーへの負荷圧力を回避します。応答が大きすぎて遅いため、ユーザー要求の応答遅延特性が向上します。

6)同時実行制御

  楽観的ロックや悲観的ロックなどのロック

7)メッセージキュー

  12306と同じように、mqごとに1つずつキューイングします。

2.予約システムでは、列車のチケットは1つしかありません。1人の個人が12306のWebサイトを開いて同時にチケットを予約すると仮定すると、同時実行性の問題を解決するにはどうすればよいですか。(これは、同時性の高いWebサイトで考慮される、同時の読み取りおよび書き込みの問題に拡張できます)

  1wの個人が同時にチケットを見ることができるようにする(データの読みやすさ)だけでなく、最終的に1人だけがチケットを購入できるようにする(データの排他性)ことも保証します。

  データベースレベルで同時アクセス制御メカニズムを使用します。楽観的ロックはこの問題を解決できます。楽観的ロックとは、テーブルをロックせずに、ビジネスコントロールを使用して同時実行性の問題を解決し、データの同時可読性を確保し、保存されたデータの排他性を確保し、同時実行によって発生するダーティデータの問題を解決しながらパフォーマンスを確保することを意味します。 。楽観的ロックは休止状態で実装されます。

  典型的な例は、2人の銀行のオペレーターが同じ口座を同時に操作する場合です。たとえば、オペレーターAとBが同時に残高1,000元のアカウントを読み取り、オペレーターAがアカウントに100元を追加し、オペレーターBが同時にアカウントの50元を差し引いた場合、最初に送信し、次にBが送信します。最後に、実際の口座残高は1000-50 = 950元で、1冊は1000 + 100-50 = 1050になります。これは、単一行の同時実行の問題です。それを解決するには?ロックが使えます。

 

おすすめ

転載: www.cnblogs.com/HuiH/p/12707009.html