2012-04-08 8 views
1

this video about scaling hundreds of thousands of usersで、キャッシングなしでErlang Statefull Serverについて話しています。 Ruby Statelessを使用する前にStatefull ServerなぜRuby、PHP、Java、ASP.NET、...では使用できないのですか?

ステートフルサーバは実際に何を意味していますか?ユーザーのセッションとサーバー上のそのステートフルオブジェクトの違いは何ですか?

なぜRuby、PHP、Java、ASP.NETがErlangと同じように機能しないのでしょうか?

更新:最終的に、彼はErlangとRubyを組み合わせなければならないと言っていたので、Rubyだけではできないことを意味していました。

+0

「どうして...できないのですか」 –

+0

男はErlangとRubyを組み合わせなければならないと言ったので、Rubyだけではできないことを意味しています。 – user310291

答えて

3

私はプレゼンテーションをまだ見ていませんが、要約からはゲームプラットフォームのようです。標準的なビジネスアプリケーションとはまったく異なるものです。標準のビジネスアプリケーションでは、セッションローカルの状態が少々残っており、その状態は通常スレッド間で共有する必要はありません。私たちの標準的なビジネスアプリケーションは、ビジネスデータを共有するためのデータベースとキャッシュに大きく依存しています。

これらのマルチプレーヤーゲームシステムは、多くのスレッドによってアクセスされる必要がある状態をほぼリアルタイムで操作する必要があります。これはErlangが優れている場所です。他の言語ではこれを行うことはできませんが、安全に、または効率的に行うことはできません。

  • Rubyとは異なり、Erlangの並行性モデルにはロックがありません。 Erlangはメッセージパッシング同時実行モデル(Actorモデルと呼ばれます)を使用します。共有メモリはありませんので、プログラミングのバグを見つけるのは難しいです。
  • Erlangランタイムは、わずかなオーバーヘッドで作成および破棄できる数十万の軽量「プロセス」をサポートできます。
  • Erlangのプロセスごとのヒープは、ガベージコレクションを迅速に行い、ほぼリアルタイムのアプリケーションを可能にします。
  • Erlangは分散コンピューティングのサポートが優れているため、ハードウェアを追加することでスケールアップすることは比較的簡単です。
  • Erlangの例外処理とその監視パターンにより、ネットワーク上のノード間であってもアプリケーションエラーを簡単に管理できます。
+0

ありがとうございます。彼が "Statefull Server"を解釈すると、これらの軽量プロセスによってオブジェクトの状態を作成できますか? – user310291

+0

はい、状態はプロセススタック上のこれらの軽量プロセス内で維持されます。プロセスにメッセージを送信してアクセスし、更新します。サーバーとFSMのフレームワークを提供するOTPライブラリモジュールがあります。 – dsmith

+0

JVM言語の "clojure"にも並行処理の興味深いアプローチがあります。 Erlangと同様に、不変のデータを好む動的な関数型言語ですが、プロセスのスタックに状態を保持するのではなく、状態の安全でロックレスな操作を可能にする言語構造(refs)を提供します。 – dsmith

2

ステートフルサーバー/アプリは、ユーザーの要求の間にある状態を維持するアプリケーションです。あなたの通常のウェブアプリはステートレスです。新しい要求はすべて完全に新しいものとして扱われます。いくつかの情報を保持したい場合、セッションを使用します(通常はクッキーに保存されます)。

これにより、Webワーカーの自由なスケーリングが可能になります。必要なだけ多くのワーカーを立ち上げることができます。

ステートフルなサーバー/アプリでは、操作を迅速に実行することができます(毎回データベースからデータを取得する必要はありません)、送信された情報を保存する必要はありません(クッキーを前後に渡す必要はありません)スケーラビリティ。今すぐあなたは空いている労働者に着信要求を投げることはできません、あなたはユーザーの状態を持っている労働者に指示する必要があります。

確かに、Rubyを使って両方の方法でプログラムすることができます。ステートレスWebアプリケーション用Rails/Sinatra、ステートフルデーモン用EventMachine

+0

"しかし、スケーラビリティーが低下します。"この場合は、スケーラビリティの向上がはっきりしています。 – user310291

+0

@ user310291:いくつかの証拠がありますか?私は、投稿にあります:) –

+0

"ユーザーの状態"はどういう意味ですか?彼は州のオブジェクトとのユーザーのセッションに反対するので、ユーザーの状態を使用しないためです。 – user310291

関連する問題