短い答えITドメインで 、スケーリングは一つのことですが、それは、二次元があります
- horozontalを
- 垂直
ほぼすべての人が垂直次元でスケーリングを考えました。それはIntelと友人がいくつかの物理的障壁に達し、現在のMHzを追加することが不可能であることを補うためにコアを追加することになりました。
これは、私たちがすべての方法を水平方向に拡大することに気付き始めたときです。
なぜ私はあなたにこれを伝えていますか?
シーサイドはVMで実行されるスモールトークイメージであり、モノコアプロセッサのサーバーのシステムとほぼ同じ状況です。
これを基礎として、サーバーのクラスタを作成してWebアプリケーションを拡張します。それは自然なことです。フォールトトレラントなことです。トポロジー的にインテリジェントなやり方です。柔軟なやり方です。
スケールすると、インテルと同じことをしてください&お友達、あなたは水平方向を受け入れます。そして、それは垂直的な方法(それは高価なほど良いIBMとSunのサーバーにあなたを導く)がさらに安いです。
RoRアプリケーションは通常、水平方向に縮尺されています。 Googleには、無駄な無駄なサーバーがありません。どのように劇的な人々があなたに忘れられないツイッタークジラの束を投げて印象づけても、それは完璧にうまく動作します。
彼らはそのことについてあなたに話をする場合は、あなただけの礼儀正しく、彼らが言うことを聞くが、これを覚えて:
- 完璧は未完成完璧をとしての価値としてなることはありません良い
- の敵であります良いことは、Amazonがあまりにもそのような何かをして、ところで
を行って(そしてそれは一種のカップルジオロケーション、彼らはあなたの場所に最も近いクラスタであなたの要求に出席の可能性を高めるために)。一方、Avi scaled dabbledb(twitterで購入したSeasideベースのWebアプリケーション会社)は、顧客アカウントごとに1つのVMMを使用していました(オンデマンドでの起動とシャットダウン)。
イメージに状態が多いとスケーリングが不可能で複雑になりません。
まったく異なります。
スティッキセッションを使用するロードバランサを使用すると、ユーザーセッションのすべての要求に1つのイメージを付けることができます。ロードバランサの背後にある作業者イメージは、任意のアプリケーションの任意のユーザーに参加できるようにします。そしてそれはかなりです。
これを行うには、永続オブジェクトをワーカー間で共有する必要があります。すべてのユーザーデータベースは、いつでも作業者がアクセスできる必要があり、並行性を十分に考慮する必要があります。
このようにスケーラブルな風通しを設計しました。
非常に小さいN(最初のサーバーのRAMによって異なる)から始めることができ、ハードウェアの制限に達するまでオンデマンドで増加できるので、経済的にも便利です。
ハードウェアの制限に達すると、クラスタに別のホストを追加し、バランサ(およびデータベースへのアクセス)を再構成するだけです。
シンプルで経済的でエレガントです。
は、私はかなりうまくスケールすることが知られているレールあなたのコメントによる驚いています。 Twitterは主にこの時点で動作しますが、私は彼らが標準的な軌道からかなり離れているとの印象を受けます。私は、フレームワークを拡大するための本質的な叙事詩ではないと思う傾向があります。 –
Twitterは本質的にメッセージ放送である何かのためのデータベースをバックエンドとして使用します。 スケーリング - 私が理解しているように、より多くのハードウェアを使用してより多くの需要を満たすことがいかに簡単かを意味します。 Railsの原作者の一人であるDHHが»[...]では、何も変更せずにほとんどすべてのWebサーバーとAppサーバーを追加できるので、Railsがこの定義にうまく対応できることを提案します。 ] [1]それは私の理解に合っています。 [1]:http://www.loudthinking.com/arc/000479.html –
私が理解しているように、TwitterはRailsではなくScalaを使用しています。 – Mei