21

フレームワーク (.net、Ruby on Rails、Django、Spring など) について読んでいると、よくスケールする、またはうまくスケールしないことがよくわかります。

フレームワークが「うまくスケーリングする」と誰かが言うとき、それはどういう意味ですか? また、フレームワークが「うまくスケーリングしない」と言うのはどういう意味ですか?

ありがとうございました。

4

8 に答える 8

21

同時ユーザーに対するリソース使用量 (メモリ、時間、ディスク容量、ネットワーク帯域幅) をプロットすると、アプリケーションがさまざまなスケール ファクターでどのように動作するかを表す関数が得られます。

小規模 -- 少数のユーザー -- は、少数のリソースを使用します。

大規模 (多数のユーザー) は、大量のリソースを使用します。

重要な問題は、「スケーリングがどの程度線形に近いか」です。線形にスケーリングする場合、2,000 人の同時ユーザーにサービスを提供すると、1,000 ユーザーにサービスを提供する場合の 2 倍、500 ユーザーにサービスを提供する場合の 4 倍の費用がかかります。これは、拡張性に優れたツール/フレームワーク/言語/プラットフォーム/OS です。それは予測可能であり、予測は線形です。

直線的にスケーリングしない場合、4,000 ユーザーにサービスを提供すると、2,000 ユーザーにサービスを提供する場合の 1,000 倍の費用がかかり、500 ユーザーにサービスを提供するには 100 倍の費用がかかります。これはうまくスケーリングできませんでした。使用量が増えると何か問題が発生しました。予測可能ではないようで、線形ではありません。

于 2009-06-01T20:10:51.590 に答える
8

これは、特定のフレームワークが、より多くのユーザーが要求する需要の増加を満たしている (または満たしていない) ことを意味します。たとえば、VBScript で作成されたアプリケーションを使用している場合、Facebook の 40,000,000 人のユーザーを適切に処理できない可能性があります。

このブログ投稿では、1 年ほど前に Twitter が経験したスケーラビリティの問題について説明しています。それはあなたの質問への答えへのより多くの洞察を提供するかもしれません.

スケーラビリティの欠如は、言語やフレームワークを中傷するために使用される場合があるため、注意してください。実際の指標を示す調査に固執します。これは、前の段落の VBScript の例にも当てはまります。

于 2009-06-01T20:00:05.480 に答える
4

フレームワークまたはアプリケーションが適切にスケーリングされる場合、それはより大きな負荷を処理できることを意味します。より多くの訪問者と 1 日あたりのヒット数でサイトの人気が高まるにつれて、適切にスケーリングするフレームワークは、より小さな負荷を処理するのと同じように、より大きな負荷を処理します。適切にスケーリングするフレームワークは、1 時間に 1 ヒットを取得する場合と同じように、1 時間に 200,000 ヒットを受信して​​も同じように動作します。ヒットするだけでなく、複数のサーバーに展開され、負荷分散の背後にある可能性があり、複数の異なるデータベース サーバーを使用している可能性があります。拡張性に優れたフレームワークは、これらの増大する要求を適切に処理できます。

たとえば、Twitter は昨年、ほぼ一晩で爆発的に増加しました。これは Ruby On Rails を使用して開発されており、Rails が適切にスケーリングするかどうかについて進行中の議論で熱く取り上げられました。

于 2009-06-01T20:01:07.723 に答える
2

「スケール」を「ハンドル拡張」というフレーズに置き換えます

于 2009-06-01T20:01:23.747 に答える
2

私の心にはいくつかの要素があります。1 つ目は明らかな 1 つで、パフォーマンスのスケーリングです。フレームワークを使用して大容量、高スループットのシステムを構築できますか、それとも小規模なアプリケーションを構築するためだけに使用できますか。ハードウェア (並列ライブラリなど) で垂直方向にスケーリングし、水平方向 (Web ファームなど) にスケーリングしますか。

2 つ目は、大規模なチームや企業に拡張できるかどうかです。つまり、大規模なコード ベースでうまく機能しますか? 大規模な開発チーム?ツールのサポートは充実していますか?導入は簡単ですか? 数十、数百、さらには数千のユーザーにロールアウトできますか? 結局のところ、このスキルを持っている人を雇うのは簡単です. 全員がこのフレームワークに取り組む 20 人または 50 人の開発チームを編成しようとすることを考えてみてください。それは簡単でしょうか、それともほぼ不可能でしょうか?

于 2009-06-01T20:03:49.153 に答える
0

これは、尊敬されている会社が何か真剣に取り組んでおり、問題が発生していないことを意味します。

于 2009-06-01T20:24:47.567 に答える
0

スケーリングとは、より多くのハードウェアを使用することで、より多くの需要を満たすことがいかに簡単かを意味します。

例: 1 日に 1000 回アクセスされる言語で書かれた Web サイトがあるとします。著名な雑誌に取り上げられ、ユーザー数が増加します。突然、1 日 100 万回の訪問があり、それは 1000 倍になります。増大するリソースのニーズを満たすためにあと 1000 台のサーバーを使用できる場合、Web サイトは適切にスケーリングされます。一方、2000 台のサーバーを追加してもユーザーが接続できない場合は、データベースが 1 日あたり 1000 件のリクエストしか処理できないため、Web サイトが十分に拡張されません。

于 2009-09-20T21:10:43.367 に答える
0

私見では、フレームワークが「うまくスケーリングする」と言うのは、通常、伝聞チェーンの誰かがそれを使用して大量のボリュームを処理できたことを意味します。

並列プログラミングでは、スケーラビリティは通常、並列化されたときにアルゴリズムがどのように実行されるかを説明するために使用されます。1:1 の高速化を実現するアルゴリズムはめったにありませんが、ハードウェア/CPU が 2 倍になるとパフォーマンスが 2 倍になり、ハードウェア/CPU が 3 倍になるとパフォーマンスが 3 倍になります。

私の経験では、十分な専門知識があれば、ほとんどすべてのフレームワークを拡張することができます。

フレームワークが使いやすいほど、専門知識が不十分な開発者がスケーラビリティの問題に遭遇する可能性が高くなります。

于 2009-06-01T20:20:08.480 に答える