服务器之间的重连总结
我们这边的服务器重连分为两种。
[1] 第一次连接未成功的循环尝试连接
这个比较好理解,比如,我们某个内部服务器未启动成功,主逻辑服务器第一次没连接成功,接下来,启动一个定时器,不断地重连,当内部服务器正常了,就能连接上。
注意两个问题,要启动了一个定时器不断得去尝试连接;连接要采用非阻塞或者异步的模式。这样,某个一个内部服务器没正常启动或者内网有异常的情况下,不会使我们的主逻辑出现性能上的抖动。
[2] 已经连接成功后的循环尝试连接
这个初看和第[1]种没什么区别。仔细分析一下,主要涉及到数据完整性的问题。
考虑已经连接成功的一个tcp连接,应用层发了一个消息包50字节,发了49字节出去后,内网的某个路由端口出故障了,这个时候还有一个1个字节在本地,未发出。这次重连的时候,就考虑把剩余的数据发出去。否则重连成功了,tcp是基于流的,接下来数据解析正常情况下就会全出错,基本不重启程序,就没机会正确地解析数据了。