3

私はプロジェクトに取り組んでいます

1.複数のプロセスが一意のポート(おそらく複数のホスト)でリクエストをリッスンする必要があります

2.すべてのプロセスは、固有のクライアントにサービスを提供するためのものです

3. クライアントは、識別子/エンドポイントとして client_id.domainname.com を使用して、それぞれのサーバー プロセスに接続する必要があります。

例: に来るリクエスト

client_id_1.domainname.com:FIXED_PORT should go to host_1:port_1
client_id_2.domainname.com:FIXED_PORT should go to host_2:port_2    
etc..
[Edited for clarification : the port number with which client will access should be fixed.Only the client_id would change with change in client]

4.[編集(この点を見逃していた)]。マッピングは動的/変更可能である必要があります。たとえば、1 つのプロセスが停止した場合、別のプロセスを起動する必要がありますが、これは同じポート上にない可能性があります。

次のアプローチを試しました(Javaを使用)

1. tcp サーバーを実装し、http: //code.google.com/p/portforward/ を使用して tcp ポート転送を使用してみました。また、検索で見つけた他の同様のものも使用しました。問題は、これが要求 uri( uri からサブドメインを使用してクライアント ID を取得する)

2.組み込みの桟橋にサーブレットとしてサーバー プロセスを実装しました。これは、GET 要求に対してのみ有効です。を使用して、GET 要求を特定のサーバーにリダイレクトできます。

httpServletResonse.sendRedirect("http://host_1:port_1")

POST の場合、最終的に GET になる RequestDispatcher があります。HTTP 仕様では、POST によるリダイレクトが許可されていないようです。

また、このCalling the doPost in another Webapp with a Req Dispatcher forwardを見つけました。これは、プログラムで POST リクエストを自分で起動することを提案しています (私はまだこのアプローチに取り組んでいません)。

これに対する解決策があることを願っています。非常に単純化しすぎているかもしれませんが、これは HEROKU が行うことと似ていると思います。また、異なるポートで実行されるバックエンド プロセス (dyno) もあります (これについてはよくわかりません)。それらは、アプリに基づいて着信要求と照合されます-以下では http://www.quora.com/Scalability/How-does-Heroku-workについて説明しますが、この質問には回答がありません。

私はこれについてかなり長い間立ち往生してきました.私はあなたの助けに本当に感謝しています.

4

1 に答える 1

0

Heroku スタックでは、標準の HTTP および HTTPS ポート (80 および 443) しかサポートされていないため、これは不可能です。プロセスを起動すると、サービスが接続されているポートは Heroku インフラストラクチャによって指示されます ( $PORT および Procfilesを参照)。

このモデルに適合しないことをしようとしても、より多くのポートをサポートするまで実際には機能しません。

于 2011-12-30T19:38:53.047 に答える