ネットワークを多用するサーバー アプリケーションを Linux で開発するには、どのようなアーキテクチャが適していますか? このアプリは通常、複数のコア (仮想または物理) を備えたマシンで実行されるという考えです。パフォーマンスが重要な基準であることを考えると、マルチスレッド アプリケーションとマルチプロセス設計のアプリケーションのどちらを選ぶのがよいでしょうか? リソースの共有と、複数のプロセスからそのようなリソースにアクセスするための同期は、多くのプログラミング オーバーヘッドであることは知っていますが、前述のように、全体的なパフォーマンスが重要な要件であるため、それらのことは無視できます。また、プログラミング言語は C/C++ になります。
マルチスレッド アプリケーション (単一プロセス) でさえ、複数のコアを利用して、各スレッドを異なるコアで個別に実行できると聞いています (同期の問題がない限り)。そして、このスケジューリングはカーネルによって行われます。もしそうなら、マルチスレッド アプリケーションとマルチプロセス アプリケーションのパフォーマンスに大きな違いはありませんか? Nginx はマルチプロセス アーキテクチャを使用しており、非常に高速ですが、マルチスレッド アプリケーションで同じパフォーマンスを得ることができますか?
ありがとう。