11

Node.js TCPソケット指向のアプリケーションをクラウド、より具体的にはHerokuまたはAppFogで実行することは可能です。

Webアプリケーションではなく、クライアントプログラムにアクセスするためのサーバーになります。基本的な考え方は、クラウドの機能(スケーリングと使いやすいプラットフォーム)を使用することです。

このようなアプリケーションはAmazonAWSのようなIaaSで簡単に実行できることは知っていますが、 HerokuまたはAppFogのPaaS機能を実際に活用したいと思います。

4

3 に答える 3

17

「Node.jsTCPソケット指向のアプリケーションを実行することは可能ですか」という当面の質問には答えられないと私は合理的に確信しています。すべてのPaaS企業(Nodejitsuを含む)は、着信接続に対してHTTP[S]のみのリバースプロキシをサポートしています。

通常、node.js +ソケット指向の接続を備えたPaaSでは、WebSocketを使用しますが、次のようになります。

  1. HerokuはWebSocketをサポートしておらず、接続を55秒間だけ開いたままにします(https://devcenter.heroku.com/articles/http-routing#timeoutsを参照) 。

  2. AppFogはWebSocketをサポートしていませんが、WebSocketが長時間保持されているHTTP接続をどのように処理するかはわかりません。

  3. NodejitsuはWebSocketをサポートしており、閉じるかリセットされるまで接続を開いたままにします。node.jsを利用したリバースプロキシは、これを非常に安価にします。

将来的には、カスタムポートを使用した前面TCP負荷分散をサポートする予定です。乞うご期待!

于 2012-11-20T09:14:09.130 に答える
4

AppFogとHerokuは、ポート80からマップされたポートであるリッスンする単一の任意のポートをアプリに提供します。ポートを選択することはできません。長期間接続を開いたままにする必要がある場合は、以下の私の編集を参照してください。クライアントが接続を維持して開く必要がない場合は、クライアントアプリが使用するためにjsonを発行するRESTfulAPIの作成を検討する必要があります。これにはポート80で十分であり、Node.jsとExpressは、paasでAPIを作成するための優れたコンボを作成します。

AppFog

https://docs.appfog.com/languages/node#node-walkthrough

var port = process.env.VCAP_APP_PORT || 5000;

Heroku

https://devcenter.heroku.com/articles/nodejs

var port = process.env.PORT || 5000;

編集:indexzeroで述べたように、AppFogとHerokuはhttp [s]のみをサポートし、長時間保持されている接続を閉じます。AppFogは、アクティビティがある限り接続を開いたままにします。これは、Socket.ioまたはPusherなどのサードパーティソリューションを使用して回避できます。

// Socket.io server
var io = require('socket.io').listen(port);
...
io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 12); 
});
于 2012-11-20T21:29:07.230 に答える
1

tl; dr-世界の現在の状態では、それは単に不可能です; 独自のパブリックIPアドレスを持つ仮想マシンを購入する必要があります。

私が見つけたすべてのPaaSプロバイダーは、すべてのアプリケーションの前にHTTPルーターを持っています。これにより、1つのIPアドレスで数十万のアプリケーションを収容できるようになり、スケーラビリティが大幅に向上します。したがって、アプリケーションホスティングを無料で提供する方法がわかります。したがって、HTTPの場合、Hostnameヘッダーはアプリケーションを一意に識別するために使用されます。

ただし、TCPの場合、アプリケーションを識別するためにIPアドレスを使用する必要があります。したがって、これが機能するためには、PaaSプロバイダーはIPv4範囲から1つを割り当てることを余儀なくされます。これは、2つの主な理由で拡張できません。IPv4アドレス空間が完全に使い果たされていることと、「レガシー」ネットワークのペースが遅いためにVMを物理的に移動することが困難になることです。(「レガシー」ネットワークとは、標準/非SDNネットワークを指します。)

これら2つの問題の解決策はIPv6とSDNですが、IPv6よりも先にユビキタスSDNが到着すると予測しています。これは、さまざまなIPv4問題の解決に使用できます。AmazonはすでにデータセンターでSDNを使用していますが、まだ長い道のりがあります。それまでの間、パブリックIPアドレスを持つ仮想マシン/ Linuxコンテナインスタンスを購入し、そこでTCPサーバーを実行するだけです。

于 2014-12-16T09:55:41.473 に答える