Java での高い同時実行性に対処する方法: 1. コードを最適化し、リソースの不必要な浪費を削減します。 2. ページから画像を分離し、独立した画像サーバーに画像を配置します。 3. キャッシュを使用すると、データベースとの相互作用とパフォーマンスの向上 4. データベース クラスターの使用 5. DB の最適化の実行 6. ハードウェアの負荷分散の実現 など
Java の高い同時実行性を処理する方法:
1. 最も基本的なところから始めて、記述する内容を最適化します。コードを使用して、リソースの不必要な無駄を削減します。
a. 新しいオブジェクトの頻繁な使用を避けるアプリケーション全体で 1 つのインスタンスのみが必要なクラスの場合は、シングルトン モードを使用できます。 String 接続操作の場合は、ツール クラスの静的メソッドを通じてアクセスできる StringBuffer または StringBuilder を使用します。
b. 間違った方法の使用を避け、条件判定にinstanceofを使用しないようにしてください。 Java では、Vector よりも優れたパフォーマンスを持つ ArrayList などの効率的なクラスを使用します。
おすすめ動画コース→: 「1000万レベルのデータ同時実行ソリューション(理論と実践編)」
2 . HTML static
リンク アドレスを通じてアクセスします。このリンク アドレスを通じて、サーバーの対応するモジュールがリクエストを処理し、対応する JSP ページに移動し、最終的に必要なデータを生成します。しかし、リクエストが数千万件あり、同時リクエストが多すぎるとサーバーへの負荷が増大し、最悪の場合サーバーがダウンしてしまいます。では、この状況を回避するにはどうすればよいでしょうか? test.do の最初のリクエストの結果を HTML ファイルに保存し、ユーザーが毎回この HTML ファイルにアクセスするようにすると、サーバーにアクセスする必要がなくなります。サーバーへの負荷は大きくなりません。削減?
静的ページを自動的に生成するにはどうすればよいですか? ユーザーがそのページにアクセスすると、test.html が自動的に生成され、ユーザーに表示されます。
3. 画像サーバーの分離
Web サーバーの場合、画像が最も多くのリソースを消費するため、ページから画像を分離する必要があり、画像は独立した画像サーバーに配置されます。このようなアーキテクチャにより、ページ アクセス リクエストを提供するサーバー システムへの負荷が軽減され、画像の問題によるシステムのクラッシュが確実に回避されます。画像サーバーでは、さまざまな構成を最適化できます。
4. キャッシュを使用する
ユーザー キャッシュ、情報キャッシュなどのキャッシュを使用してみてください。キャッシュに多くのメモリを費やすと、データベースとの対話が大幅に削減され、パフォーマンスが向上します。
5. 一括送信
あるプロジェクトを進めていた際、一度に送信できるパラメータの数が多すぎて、データベースに一度に送信できるパラメータの最大数が規定されていたため、当時は 30,000 でした。当時のパラメーターは 50,000 でした。記録、送信するにはどうすればよいですか?エレベーターが一度に多くの人を乗せられない場合、重量超過のバグが報告されるため、人々はまとめて送られます。
別の試験システムでは、非常に多くの受験者が同時にデータベースに提出すると、データベースへの負荷が増大し、データベースがダウンすることがありました。その際に使用された方法は、ajax を使用することでした。待ち時間のない非同期送信により、受験者が送信ボタンをクリックすると自動的に回答が送信されるため、突然の停電などで受験者が以前に行った質問が失われることもありません。
6. データベース クラスター
複雑なアプリケーションとそれにアクセスする多数のユーザーに直面すると、1 つのデータ セットではすぐに需要を満たすことができなくなるため、データベース クラスターを使用する必要があります。またはデータベーステーブルのハッシュ。
ビジネス モジュールとアプリケーション モジュール、または機能モジュールをアプリケーションにインストールしてデータを分離します。異なるモジュールは異なるデータベースまたはテーブルに対応し、特定の戦略に従って特定のページまたは機能をより小さなデータベースに分散します。
7. DB の最適化
a. データベースを設計する際には、後のメンテナンスも考慮する必要があります データベースの 3 つのパラダイムは、データベースを設計する際に従わなければならない原則です。
b. インデックスの作成: インデックスの作成は適切である必要があります。テーブルが頻繁にクエリされ、追加や変更にはめったに使用されない場合は、追加や変更には使用されないため、このテーブルのインデックスを作成できます。削除操作を行う場合、インデックスのメンテナンスはインデックスによってもたらされる効率を大幅に上回ります。
c. テーブル フィールドのタイプの選択には、フィールドの長さ、タイプなどが適切に含まれている必要があります。選択は、実際に保存されているデータに基づいて行う必要があります。長さは長すぎてはいけません。効率に影響を与えます。
d. 主キーはこのテーブルを表し、外部キーはテーブルを関連付けるテーブルのグループを表すため、外部キーの使用には注意が必要です。削除や変更などを行うときは、外部キーを関連付ける必要があります。 。
e. データベース操作の場合
PrepareStatement はプリコンパイルされているため、prepareStatement を使用し、Statement の使用を減らしてください。
接続は readOnly に設定されています。接続はライブラリへの接続であり、重量が大きいため、そのまま使用できます。
接続プールを使用すると、データベース内のデフォルトの接続数を変更できます。
8. ハードウェアで負荷分散を実現する
以上がJava は高い同時実行性をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。