默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教IM服务端多服务器如何择优连接的问题
阅读(45817) | 评论(6 收藏 淘帖
有多台服务器,请问一般来说客户端该用怎么样的方案来择优连接对应的服务器呢?
目前有多台服务器,在移动4G环境下部分地点会访问不到某几台服务器,有几台则是稳定能访问,但如果所有连接都涌入到这几台服务器的话负荷会很大,而且也无法妥当利用所有服务器资源。现在的思路是在断网之后切换到下一个服务器继续尝试。感觉这样的处理办法有点简单粗暴,不知道有没有更好的方案呢?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:报告,RainbowChat 的测试服务器登录不了下一篇:java socket接收的数据是否可通过FileDescriptor映射内存?
推荐方案
评论 6
你的描述不清楚,补充以下问题可以更精准地帮你找到解决方法:
1)是移动端IM吗?
2)现在的架构就已经做了集群吗?
3)如果做了集群,那你们的负载分配算法是怎么样的能否描述一下。
是移动端im
没有做集群(具体原因我也不太清楚)
现在给我的一个改动需求就是客户端需要根据网络状况选择服务器
理论上应该有负载均衡机制,你可以深入研究下,看看到底是什么均衡算法。因为你的需求:要根据客户端网络状况自动选择的话,可能跟这个负载均衡算法会有冲突。

不过,抛开集群本身不说,只是单纯地想让客户端根据网络自动选择服务器,那就只能在客户端实现一个简单的ping算法,取ping值最小的服务器连上就可以了。至于ping值怎么取,这就是你要根据生产环境下的网络实际情况来权衡了,构思一个小小的算法。

另外,你文中提到断网后就连接到下一个,个人认为是太粗暴了点。因为移动网络本身的不可靠性,某个时刻断线并不意味着这个服务器的连接就比别的差,只是因为刚才只是转个身信号被挡住了而已。建议你在写个简单的定时ping算法,自动维护一个服务器列表,通过长时间的ping可以得出更公正的结果,一旦到了要决定换连接的时候,通过这个结果列表,取最佳ping结果的服务器,再去决定要连接就合理多了。
要想妥当地利用服务器资源并能据根据客户端的网络状况来决定连哪个,我觉得一是你得有客户端的网络评估算法来决定哪几台是备选连接服务器,另一个是服务端的负载肯定要维护一个列表:也就是key=servername、value=负载数量 来决定服务器的负载允不允许被连接,不然你的边接很可能就是会拥挤到几台服务器上。
签名: 该会员没有填写今日想说内容.
非常感谢LS提供的思路-0-
学习了……
签名: 闲的蛋疼……
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部