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 回答