プログラミング言語を比較する多くの記事を読みました。
よくあるWordがあります:scalability。私は実際にシンプルで明確な説明を探しましたが、何も見つかりませんでした。
スケーラビリティという用語の意味を説明できますか?
スケーラビリティとは、プログラムがスケーリングする能力です。たとえば、小さなデータベース(たとえば、1000レコード未満)で何かを実行できる場合、非常にスケーラブルなプログラムは、小さなセットでもうまく機能し、大きなセット(たとえば、数百万または数十億のレコード)でもうまく機能します。 )。
ギャップが言ったように、リソース要件は直線的に増加します。データ入力が大きくなるほど、プログラムがより多くの計算を必要とする方法の詳細については、Big-O表記を参照してください。 Big-O(x ^ 2)のような放物線は、Big-O(x)のような線形のものよりも大きなx入力では効率がはるかに劣ります。
スケーラビリティは、ソフトウェアソリューションが増加した作業負荷を処理できる特性です。これには、より大きなデータセット、より高いリクエストレート、サイズと速度の組み合わせなどがあります。
システムのスケーラビリティについて話すときは、通常、
スケールアウトできるソリューションは、通常、より費用効果の高い方法でより大きな負荷に成長できます。ここで知っておくべき重要なことは、 Amdahlの法則 です。これは、スケールアウトする能力がソフトウェアの連続部分によって制限されることを示しています
すでに素晴らしい回答がここにありますが、ここにいくつか追加したいことがあります。
スケーラビリティは2つの方法で実現できます。
垂直-このようにして、RAM、プロセッサ、ノードなどのハードウェアを追加します。また、使用するルーティングアルゴリズムに基づいて、着信コールをさまざまなサーバーにルーティングするのに役立つロードバランサーを導入します。サーバー間で負荷が共有されるため、アプリケーションはより多くの負荷を処理できるようになりました。
水平-水平スケーリングでは、より多くの並列トラフィックがある場合に適切に動作するようにアプリケーションを設計/設計します。メモリ、セッション、キャッシュ、状態などの管理方法を確認します。ユーザー情報を維持するためにセッションを使用している場合、高負荷の場合、単一サーバーがサーバーの管理により忙しくなり、この場合の可能性を確認できますステートレスになります。また、セッションが使用されている場合に発生するシリアル応答ではなく、同じユーザーからの着信要求に並行して応答することもできます。
私の理解では、要求された出力の線形増加はリソースの線形増加のみを要求することを意味します。