質問

これは私がいつも疑問に思っていることです。水平スケーリングとは、さらに多くのマシンを追加することだと理解しています。しかし、これには 2 つのアプローチが考えられます。使用したいサーバーが 20 台 (およびデータベース) あるとします。できます:

  1. 20 台のサーバーすべてをアプリケーション サーバーとして実行します。
  2. 異なるサーバーにタスクの異なる部分を実行させます。たとえば、あるサーバー セットでリクエストを処理し、次に別のセットでビジネス ロジックを適用し、さらに別のセットでデータベース呼び出しを行うようにします。

1 番はより一般的で理解しやすいようですが、2 番は「ベスト プラクティス」とみなされているようです (ほとんどが n 層アーキテクチャであるため)。これら 2 つのモデルをどのように選択すればよいでしょうか?そして、それぞれのアプローチの長所と短所は何でしょうか?

役に立ちましたか?

解決

それはタスクと、何がボトルネックになるかによって異なります。

ほぼ例外なく、少なくとも 2 種類のサーバーが必要になります。1) アプリケーションと 2) データベース。アプリケーション サーバーを分散する場合でも、アプリケーション サーバー間でデータを同期し、それらのサーバーの 1 つ (または別のサーバー) をデータベース サーバーにする必要があります。

データベースに大量のトラフィックが発生しないことがわかっている場合 (例:ライブ チャット ベースのサイトを実行していて、永続的に保存または同期されるデータがあまり多くない場合は、アプリケーション サーバーのみを作成するという選択でも問題ないかもしれません。

ただし、大部分のサイト、特にどのサーバーがボトルネックになるか事前にわからない場合は、選択肢 2 の方が適しています。各サーバー タイプの拡張を許可しない場合、予期しない成長の急増時にソース コードを書き直す必要が生じます。その場合、「スケーリング作業中もサイトが機能できるようにするには、どの機能を無効にする必要があるか?」など、難しい決定を下す必要があります。

ただし、正直に言うと、スケーラビリティについて心配するのにそれほど多くの時間を費やすつもりはありません。サーバーの負荷が高くなりすぎる点に達すると、ある程度のソースの書き換えを許容できるようになります。新たに発見された資金源を通じて、またはサイトからの直接利益を通じて。 適例:ツイッターは相変わらず絶好調です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top