0

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

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

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

4

1 に答える 1

1

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

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

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

ただし、大多数のサイトでは、特にどのサーバーがボトルネックになるかを事前に知らない場合は、選択肢2の方が適しています。各サーバータイプの拡張を許可しない場合、予期しない急増の際にソースコードを書き直さなければならないことになります。次に、「スケーリングに取り組んでいる間もサイトが機能できるように、どの機能を無効にする必要があるか」などの難しい決定を下す必要があります。

正直なところ、スケーラビリティについて心配することにあまり時間をかけません。サーバーの負荷が高くなりすぎるポイントに達すると、ソースを書き換える余裕ができます。新たに発見された資金源を通じて、またはサイトからの直接利益を通じて。適切な例:Twitterはまだ順調です。

于 2009-12-24T18:00:42.693 に答える