高い同時実行性を実現する 3 つの解決策は次のとおりです: 1. システムの分割、システムを複数のサブシステムに分割すること、2. キャッシュ、最新のすべてのコンピュータ システムにおける高性能の重要な要素の 1 つ、3. MQ (メッセージ キュー) 、基本データ構造における「先入れ先出し」データ構造。
このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。
1: システムの分割、システムを複数のサブシステムに分割するには、dubbo を使用します。次に、各システムはデータベースに接続されるため、元々は 1 つのデータベースがありましたが、現在は複数のデータベースがあるため、高い同時実行性に耐えることができます。
2: キャッシュ。キャッシュを使用する必要があります。ほとんどの同時実行性の高いシナリオでは、読み取りが増加し、書き込みが減少するため、データベースとキャッシュの両方にコピーを書き込み、読み取り時にキャッシュを大量に使用できます。結局のところ、Redis は 1 台のマシン上で数万の同時実行を簡単に実行できます。問題ない。したがって、プロジェクト内で主要な読み取りリクエストが発生するシナリオで、キャッシュを使用して高い同時実行性に抵抗する方法を検討できます。
ビデオ コースの推奨事項 →: 「数千万のデータに対する同時実行ソリューション (理論的および実践的)」
3: MQ (メッセージ キュー)、MQ を使用する必要があります。同時実行性の高い書き込みシナリオがまだ発生する可能性があります。たとえば、業務運営では、データベースに何十回も頻繁にアクセスして、追加、削除、変更、追加、削除、変更を繰り返す必要があります。これはクレイジーです。その高い同時実行性は間違いなくシステムを破壊します。キャッシュのホストと書き込みに Redis を使用すると、間違いなく機能しません。データはいつでも LRU (最も使用頻度の低いものは削除されます) になります。データ形式は非常にシンプルであり、トランザクションのサポートはありません。したがって、mysql を使用する必要がある場合は、mysql を使用する必要があります。あなたは何をするべきか? MQ を使用します。大量の書き込みリクエストが MQ に注ぎ込まれ、キューに入れられ、ゆっくりと再生されます。システムは消費後にゆっくりと書き込み、mysql の負荷範囲内で制御します。したがって、プロジェクト内で複雑なビジネス ロジックを記述するシナリオで、MQ を使用して非同期に書き込み、同時実行性を向上させる方法を検討する必要があります。単一の MQ マシンが数万の同時実行に耐えることは問題ありません。
拡張情報:
高同時実行性に対処するためのもう 3 つの方法
サブデータベースとサブテーブル
おそらく次の場所にあります。最終的なデータベース レベルは、依然として高い同時実行性に抵抗することは避けられません。その後、データベースを複数のライブラリに分割して、より高い同時実行性に抵抗し、テーブルを複数のテーブルに分割します。各テーブルのデータ量は同じままです。 SQL 実行のパフォーマンスを向上させるには、もう少し少なくします。
読み取りと書き込みの分離
これは、ほとんどの場合、データベースの読み取りが多くなり、書き込みが少なくなる可能性があることを意味します。すべてのリクエストが 1 つのライブラリに集中する必要はありません。マスター/スレーブ アーキテクチャ、メイン ライブラリの書き込み、ライブラリからの読み取り、および読み取りと書き込みの分離。読み取りトラフィックが多すぎる場合は、スレーブ ライブラリをさらに追加できます。
solrCloud
SolrCloud(ソルラークラウド)は、Solrが提供する大量データの分散全文検索を解決できる分散検索ソリューションで、クラスタを構築しているため高可用性を持っています。単一障害点を回避するために、データのマスター/スレーブ バックアップを実行します。データを素早く復元できます。また、新しいノードを動的に追加し、データのバランスをとって負荷分散を実現できます。
コンピュータ関連の知識について詳しくは、FAQ 列をご覧ください。
以上が高い同時実行性を実現する 3 つの解決策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。