質問

同様の質問を投稿して、どのようにスケーラブルlinqが機能するかについて説明しました。最近の会話でスケーラビリティが実際に意味するものについては非常に多くの意見があったので、この質問をすることも私にきっかけになりました。スケーラビリティとはどういう意味ですか?

役に立ちましたか?

解決

2つの観点からスケーラビリティを検討します:

スケールアップ

何かを実行しているボックスにRAMを追加すると、パフォーマンスと容量がどれだけ増えますか?サーバーに2 GBのRAMを追加すると、1つのアプリケーションで300以上の接続を処理でき、15%速く実行でき、別のアプリケーションで100個以上の接続を処理でき、5%速く実行できる場合、アプリケーションAは明らかにスケーラブルです。

スケールアウト

今、セットアップにさらにボックスを追加した場合、どの程度のパフォーマンスと容量が得られますか?より多くのクライアントトラフィックを処理するようにWebフロントエンドを設定できますか?もしそうなら、線形の増加はありますか? 3つのボックスを追加した場合、サイトにアクセスするユーザーを3倍増やすことができますか?データベースを追加してデータ負荷を分散できますか?マルチスレッドをスケールアップできますか?ネットワークにマシンを簡単に追加して、アプリケーションに容量を追加できる場合、スケーラブルです。

ところで、これはn層のプライマリドライブの1つです。

他のヒント

スケーラビリティとは、次の2つの領域のいずれかで成長を処理する能力を意味します。

1)新機能の追加、バグ修正。コードにこれらの新しいことをさせるには、それはどれほど難しいですか?これはいくつかの点で保守性があるかもしれませんが、より大きなスケールを簡単に処理するコードを構築できるかどうかの問題でもあります。

2)Web開発での複数のリクエストや、単純なデータベース駆動型Webサイトの大規模なデータセットなど、より大きな負荷を処理する能力。まだ「クイック」と表示されている数十万行のテーブルを処理するアプリケーションを作成できますか?

一般的に私にとってスケーラビリティとは、成長する能力を意味します。

スケーラビリティーは、コンテキストなしでは理にかなっていません。

システムのスケーラビリティについて尋ねられたとき、最初に知っておく必要があるのは、その利用率がどのように成長するかということです。より多くのユーザーを獲得しますか?既存のユーザーはそれをもっと活用しますか?その機能セットは成長しますか?現在サポートしているトランザクションの組み合わせに変更はありますか?ユーザーエクスペリエンスを変更する必要がありますか?

(OK、これらの質問のすべてに対する答えは通常「はい」です;そしてそれらの質問に「方法」という単語を追加します。)

完全に架空の例ではありません:現在非常に少数のユーザーをサポートしており、ユーザーベースが急速に成長すると予想されるシステムは、DBAが2時間かけて、新しいアカウントを設定する必要があるたびにメールを送信します。追加するリソースのリストにDBAを含めない限り、それはリソースを追加することで修正できる問題ではありません(うまくスケールしない多くの理由があります)。

または、ソーシャルネットワーキングサイトで、友人がオンラインかどうかを確認し、Ajax-y UIを使用してチャットできるエキサイティングな新機能を展開するとします。突然、ユーザーベースが増加することなく、サーバーが1日に処理するHTTPリクエストの数は20倍に増え、データベースのスケーラビリティについての心配はバックグラウンドに戻ります。 (もちろん、チャットアプリケーションにデータベースを使用している場合を除きます。よく考えてください!)

もちろん、Webサーバーを追加できるようにWebアプリをステートレスにし、プロキシを追加できるようにWebページをi等にし、サーバー間でデータベースをパーティション分割できるようにアプリケーションを設計します。さまざまな次元でスケーラブル。それについて考えることは非常に価値があります。しかし、戦闘を開始する前に、本当の敵が何であるかを把握することがはるかに重要です。

あの質問に速く答えたかのように答えましたが、それは私がジャークになりたくなかったからです:)-つまり、スケーラブルとはどういう意味かという議論を始めたくありませんでした。システムにリソースを追加するとパフォーマンスが向上します。

その意味で、PLINQはスケーラブルです。コアを追加すると実行が速くなるためです。

@Lou Francoの投稿に追加するだけです。

PLINQには奇妙な「スーパーリニア」もあります。オーバーヘッドが限られているいくつかのシナリオでのパフォーマンス(デモの一部による)。試してみてください。

もしあなたがC ++の男なら、Microsoftは明らかに彼らに関連するランタイムコストがない並行性機能とあなたがより良く電話をかけるのを助ける追加のタスクベースの並行性ツールをリリースしようとしています。

スケーラビリティは、コストパフォーマンス曲線の滑らかさの尺度と考えています。

つまり、コンピューティングリソースに少し費やして低パフォーマンスのシステムを取得し、リソースを徐々に追加することで、比例してより優れたシステムを取得できる場合、スケーラブルです。リソースを高価なチャンクで追加する必要がある場合、線形の改善よりも少ない改善を得るには、スケーラブルではありません。

スケーラビリティ-追加のリソースを使用して容量またはスループットを向上させるシステムの能力。ドライブ、メモリ、ネットワークカード、プロセッサ、マシンなどの追加リソース。

スケーラビリティを機能の成長に直接関連付けることはしませんが、スケール制限でシステムに機能を追加することはできない場合があります。

最近、特にウェブアプリ向けですが、場合によってはエンタープライズアプリ向けにも、水平スケーラビリティが必要なものです

コモディティハードウェアを追加することで、さらに多くのトラフィック(データ、処理)を処理できますか? 「クラウドサーバー」を使用してもアマゾンec2、グーグルアプリエンジンなど

スケーラブルとは、n個のリソースをシステムに詰め込むことができ、O(log(n))とO(n log n)の間の空間と時間の両方で増大することを意味します。それはやや非現実的ですが、それは私が「スケーラブル」だと思う方法です。

うわー、大きな言葉....

クライアントが何を望んでいるかに依存するため、すべてのプロジェクトで新たに定義します。

スケーラビリティとは、常に処理/ストレージ容量を追加することではありませんが、多くの入力と出力をサポートすることもできます。

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