5

TLDR: 失敗することがある TCP サーバーに自動的に再接続するための再利用可能なコードはありますか?


私はサーバー アプリケーションを作成しています。halこれは、他のサーバーへの TCP 接続も開きますxbmc。私は当初、xbmc失敗したときにxbmcerlang プロセスが停止し、その後スーパーバイザーによって再起動されるように書いていました。

どうやら、これは erlang で永続的な TCP 接続を行うには良い方法ではありません。まず第一に、これは実際には機能しません。xbmc失敗すると、プロセスの再起動が速すぎて、スーパーバイザーがプログラム全体をシャットダウンしてしまいhalます。第二に、私はこれにスーパーバイザーを使用することは想定されていないようです: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (私が読んだように、このリンクされた質問は「スーパーバイザーはこれを解決しますか?」と答えるだけであり、私の質問の複製ではありません。 )

これはかなり一般的な使用例のように聞こえると思います。ホストがときどきダウンする場合でも、TCP 接続を可能な限り接続したままにします。これを達成するために使用する必要があるOTPまたはその他のライブラリコードはありますか?

4

1 に答える 1

3

いいえ、OTP にはこれを行うものは何もありません。

私がこれを自分で書いた回数を考えると、まともな接続管理ライブラリを書く時が来たと言えます。特に、接続の試行と結果の最近の履歴を考慮し、エンドポイント アドレス (ホスト名とポート) を指定し、ホスト名ルックアップから返された複数のアドレスを使用して、複数の宛先を持つエンドポイントの高速フェイルオーバーを実行できます。

于 2012-07-18T22:41:28.153 に答える