2012-02-29 4 views
1

これは愚かなクエリかもしれませんが、私はこのクエリを複数回見つけました。 Webサービスが1つだけの場合は、通常の計算(A + Bなど)を実行してください。シンプルなWebサービスでスケーラビリティを実現する方法

今、このサービスは、何十億というユーザーによって使用されています。あなたのサービスはスケーラブルであることをどのように確認できますか?何十億というヒットを処理することができると言えますか?

当初は私にとっても愚かな質問に思えます。しかし、実際には、通常の計算を行っているWebサービスが1つだけであれば、数十億のヒットを処理することはできません。

成長する何十億というユーザーがこのサービスを使用したい場合、どのようにスケーラビリティを達成できますか。

注:ハードウェアの部品またはロードバランサに基づいて返信しないように要求されています。このクエリは、ソフトウェア(ロードバランサ以外)にのみ関連しています。

+0

スケーリングは、ハードウェアを追加することによってのみ可能です。 1000人のユーザーに使用したのと同じマシンで、何十億ものユーザーをサーバーすることはできません。 –

答えて

1

CPU、RAM、またはOS/NIC接続などの制限によって制約を受けることがあります。この質問は非常にあいまいですが、物事は一般的なケースにを見て:

  • キャッシングの適切な使用をする(A + Bのためにキャッシュするものがありませんが、ほとんどの実際の例であり)
  • オーバーヘッドが最小限に抑えられていることを確認します。たとえば、多数のプロトコルオプションが有効なWCF(たとえば、セッション+トランザクション+メッセージ暗号化)とrawソケットサーバー間のオーバーヘッドに違いがあります。 ServiceStackは、サービスの一部を外部の期限付きのリソースを必要とするならば、あなたは非同期ベースの実装
  • 対策を検討する必要があるかもしれませんWCF
  • な限りオーバーヘッドなし、赤身のスループットを提供し、途中での素敵な妥協でありますすべてを最適化します。我々はどこ

時間を過ごすために私たちを見る助けるためにミニプロファイラを使用しますが、何よりもおそらくもっと重要:

  • は、別のアプリケーション・サーバーに
を追加することにより、スケールアウトできるというシステムは、このような設計します

申し訳ありませんが、あなたがやりたくない場合でも、あなたがここに持っている最良のツールです。単一のノード(これは稼働時間以上)でこれを実行しようとすると、多くの問題があります。たとえば、ある時点でガベージコレクションを実行したい場合などです。すべてのトラフィックが1つのノードに移動すると、バックログの波紋が十分に大きくなる可能性があります。

関連する問題