服务器之间的重连总结

来源:互联网 发布:easycms 建站 编辑:程序博客网 时间:2024/06/05 05:36

我们这边的服务器重连分为两种。


[1] 第一次连接未成功的循环尝试连接

         这个比较好理解,比如,我们某个内部服务器未启动成功,主逻辑服务器第一次没连接成功,接下来,启动一个定时器,不断地重连,当内部服务器正常了,就能连接上。

         注意两个问题,要启动了一个定时器不断得去尝试连接;连接要采用非阻塞或者异步的模式。这样,某个一个内部服务器没正常启动或者内网有异常的情况下,不会使我们的主逻辑出现性能上的抖动。

   

[2] 已经连接成功后的循环尝试连接

        这个初看和第[1]种没什么区别。仔细分析一下,主要涉及到数据完整性的问题。

        考虑已经连接成功的一个tcp连接,应用层发了一个消息包50字节,发了49字节出去后,内网的某个路由端口出故障了,这个时候还有一个1个字节在本地,未发出。这次重连的时候,就考虑把剩余的数据发出去。否则重连成功了,tcp是基于流的,接下来数据解析正常情况下就会全出错,基本不重启程序,就没机会正确地解析数据了。