2010-12-08 9 views
0

私たちのアーキテクチャには、(潜在的に)何百万もの電話機にコンテンツをストリーミングするためのサーバが必要です。NIOウェブサーバの比較

ここでは建築家や操作者はJavaについてしか知りませんが、私は本当に何かをより速く、より簡単に維持することを提案します。

候補者の私のリストには、現在ある:リフト、Node.jsのイチゴ腫

サーバーは、ユーザーの資格情報を認証してユーザーに請求した後、静的コンテンツ(ビデオ、ゲーム、xmlの説明)を提供する必要があります。したがって、nosql db(couchdbまたはmongodb)も同様に使用されます。

動的コンテンツやHTMLを作成する必要はありません。

純粋な速度は重要ですが、唯一のパラメータではなく、操作上の使いやすさも重要です。

開発の観点から、私はすべて自分のやり方で3つすべて好きです。

  1. ScalaとJavaの互換性のために、他のすべてのものが同じLiftになることが私の最初の選択です。
  2. 誰もがJavascriptを理解しているので、2番目はnode.jsです。
  3. Erlangは少し勉強して教えるのが難しいので、私は個人的に好きですが、Yawsは私の最後の選択です。

質問:あなたの経験では、私に何をお勧めしますか?もう一つかもしれない。

答えて

2

あなたの要件のために難しい比較ですが、私はノードがより好きです。しかし、おそらくあなたの要件のために再びJavaはより良いフィットです。

サーバーは、ユーザーの資格情報 を認証し、ユーザーを充電した後、静的なコンテンツ (ビデオ、ゲーム、XML記述) を果たすべきです。そのため、nosql db (couchdbまたはmongodb)は としてよく使用されます。

のNode.js /> =大きな要求を処理であまり良くない(3.xでは、このより良い解決)だっれるライアンからこのroadmap talkをご覧35:36(大要求の問題についてdahls以降、あなたはどの図を見ます受け入れられない、両方とも3.xで解決されている)。

私はerlangの経験がないので、ノード対javaだけを比較できます。

  • npm vs maven => npmもっと素晴らしい。
  • node.jsには非常に素晴らしいライブラリがいくつかあり、github.comでは常にたくさん作成されています。いくつかの名前を付ける:express、socket.io、npm、node_redis
  • node.jsで非常に高速プロトタイプ作成。
  • webprogrogrammingの場合は、JavaScriptの使用方法を学ぶ必要があります。
  • java用のIDEははるかに優れていますが、node.jsではるかに少なく入力する必要があります。 coffeescript(おそらくzappa)を使用して入力を減らすこともできます。たとえば、Netbeansとnode.jsのユニットテストのサポート(既存ではない?)のJunitとの統合も好きです。
+0

非常に少ない行のクライアントにはライブビデオを扱うのにnode.jsが使用されていましたのコード(データチャンクを使用)。 – Uberto

+0

もうこれほどの問題はありません。私はこの問題を解決するためにバッファを正しく使用しなければならないと思います。 3.xのブランチでは、バッファーはずっと優れています! 35:36以降を見てください。私はソケット(BAAAAAAAD !!!、しかし解決した)の上に文字列を押すことを示しています – Alfred

+0

私の答えでは、ビデオへのリンクがありませんでした! – Alfred

1

node.jsは非常に高速で使いやすいので、私は賞賛します。あるいは、libeventに対してCコードを書いてみることもできます...しかし、上記のリストから、node.jsを本当にお勧めします。

+0

私は埋め込まれたドライバとビデオゲームのためだけにCを使用したいと思っています... :) – Uberto

2

認証とコンテンツの提供に同じ技術が必要な理由はありません。あなたは好きなテクノロジーを認証して請求することができ、非公開コンテンツ(Akamai、Cloudfront、またはカスタム認証/配送アーキテクチャ)をサポートするCDNからコンテンツを提供することができます。

要件の2つの半分は、潜在的に非常に異なる用途と、異なる設計要件を持っています。

+0

それは可能ですが、私の質問はユーザーの認証、変更、およびコンテンツのフィルタリングに有効です。データの提供は問題ではありません。 – Uberto

0

Gabriele Lana(いい友達と優れた開発者)のプライベートメールから。


私の順番は次のようになります。

  1. のNode.js - キーワードはここに実用的なされています。私は14日でnode.js + redisという小さなプロジェクトを完成させました。それは魅力的なものです。
  2. erlang - キーワードはここでパフォーマンスの安定性があります。もしerlangがそれをやり遂げることができないのであれば、おそらくそれは不可能な仕事です。学習曲線は急峻ですが、結果は素晴らしいです。
  3. あなたのプロジェクトが複雑なdomaninロジックを必要としないと思うので(私はscalaを選ぶでしょう)