18

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

4

10 に答える 10

15

私はスケーラビリティを次の 2 つの観点から見ています。

スケールアップする

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

スケールアウト

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

ちなみに、これは n 層の主要なドライブの 1 つです。

于 2008-10-18T00:41:10.923 に答える
10

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

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

2) 単純なデータベース駆動型 Web サイトの Web 開発または大規模なデータセットで同時に複数の要求が発生する可能性がある、ますます大きな負荷を処理する能力。たとえば、「素早い"?

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

于 2008-10-18T00:28:53.740 に答える
6

スケーラビリティは、コンテキストがなければ意味を成さないと思います。

システムのスケーラビリティについて尋ねられたとき、私が最初に知る必要があるのは、その使用率がどのように成長すると予想されるかということです。ユーザーは増えるのだろうか?既存のユーザーはそれをより頻繁に使用しますか? その機能セットは成長しますか? 現在サポートされているトランザクションの組み合わせは変わりますか? ユーザー エクスペリエンスを変更する必要がありますか?

(OK、これらすべての質問に対する答えは通常「はい」です。次に、これらの質問の先頭に「どのように」という単語を追加します。)

完全に架空ではない例を挙げると、現在非常に少数のユーザーをサポートしており、そのユーザー ベースが急速に拡大すると予想されるシステムでは、DBA が 2 時間かけて電子メール メッセージから抽出した情報から手動でクエリを実行しなければならない場合、深刻なスケーリングの問題が発生します。彼は新しいアカウントを設定する必要があります。これは、追加するリソースのリストに DBA を含めない限り、リソースを追加することで解決できる問題ではありません (また、うまくスケーリングできない理由はたくさんあります)。

または、友人がオンラインかどうかを確認し、素晴らしい Ajax 風の UI を介してチャットできるエキサイティングな新機能を展開するソーシャル ネットワーキング サイトを想像してみてください。ユーザー ベースが増加することなく、突然、サーバーが 1 日に処理する HTTP リクエストの数が 20 倍に跳ね上がり、データベースのスケーラビリティに関する懸念は背景に消えていきます。(もちろん、チャット アプリケーションにデータベースを使用している場合を除きます。よく考えてください!)

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

于 2008-10-18T02:55:35.707 に答える
3

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

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

于 2008-10-19T15:53:18.943 に答える
3

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

その意味で、PLINQ はスケーラブルです。コアを追加すると実行速度が向上するからです。

于 2008-10-18T00:23:17.153 に答える
3

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

PLINQ は、一部のシナリオでは、オーバーヘッドが限られている (一部のデモによると) 異常な「スーパー リニア」パフォーマンスを実現しています。やってみて。

あなたが C++ の専門家であれば、Microsoft は、明らかにランタイム コストのない同時実行機能と、呼び出しを改善するための追加のタスク ベースの同時実行ツールのリリースも検討しています。

于 2008-10-18T00:27:03.510 に答える
1

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

スケーラビリティと機能の成長を直接関連付けることはしませんが、システムのスケール制限で機能を追加することは不可能かもしれません。

于 2008-10-18T00:35:29.937 に答える
0

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

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

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

于 2008-10-19T15:14:18.430 に答える
0

スケーラブルとは、システムに n 個のリソースを詰め込むことができ、O(log(n)) から O(n log n) の間で空間と時間の両方で成長することを意味します。それは少し非現実的ですが、それが「スケーラブル」の考え方です。

于 2008-10-18T02:15:51.480 に答える
0

最近では、特に Web アプリ向けですが、場合によってはエンタープライズ アプリでも、水平方向のスケーラビリティが求められています。

コモディティ ハードウェアを追加することで、より多くの (トラフィック、データ、処理) を処理できますか? 「クラウドサーバー」の amazon ec2、google app engine などを使用していても ?

于 2008-10-18T01:07:58.250 に答える