在找一个视频聊天室在承载多人的情况下会出现卡的情况,找解决方案的过程中边缘服务器实现负载均衡技术,于是感兴趣就去找了一下资料。
大型的FMS视频语音应用(譬如:视频聊天、视频会议),就目前的情况而言,必须使用FMS集群以实现均衡负载,网上关于这方面的资料很少,并且很多只是简单描述,让人摸不着头脑,下面是我为某个项目制定的一个集群方案,现在抛出来跟大家交流一下,您如果有更好的方案,请跟贴讨论。
下面我以一个普通用户的身份描述一下该项目的使用过程,并穿插自己的一些想法:
首先,我来到网站首页,注册成为一个正式用户,然后,用注册的用户名和密码登陆系统,登陆成功后,点击首页的上的视频会议按钮跳到视频会议页面。
一般情况下,我正常登录后可以得到一个唯一的ID,当我跳转到视频会议页面的时候,会同时把这个ID传给SWF。当我跳转视频会议页面后要做的第一件事情,就是用传来的这个ID去获取关于我的某些信息,如用户名,等级等(当然,为了提高效率,可以在跳转到视频会议页面的时候不传ID,而把我需要的信息传过来)。当我获取了自己的相关信息后,我就可以准备登陆了。
在正式登陆前,我首先对四台辅助服务器(主服务器供主会场专用)进行轮询,并选择响应最快的服务器尝试登陆,如果该服务器的连接数未达到最大限制人数,则正常登陆,并发布自己的视频和音频到该服务器上,如果该服务器已达到最大连接数,则尝试从余下的三台服务器中选择响应最快的登陆,以此类推。
当我正常登陆辅助服务器并把自己的音频和视频发布到该服务器上后,我尝试新建一个到主服务器的连接,在这个连接中,我会向主服务器提交自己的用户名和所在辅助服务器的地址,连接成功后,加入主服务器的用户列表,当我退出时,我的相关信息会从主服务器的列表中删除。其他普通用户的登陆方式与我的登陆方式相同。
现在假设已经有128位用户(包括主会场)正常登陆,还是以我为例,这时候我已经可以从主服务器上获取所有人的用户列表,并可以看到主会场的视频,这时,我想看其中一位用户的视频怎么办?这时,我可以单击或双击一下用户列表中的用户名,当我单击或双击了用户列表中的用户名后,我便获得了该用户的用户名和其发布的音频和视频所在的服务器,于是,我可以新建一个连接到该服务器,以获取该用户的音频和视频。主会场的主持人可以直接连接到主服务器,并将音频和视频发布到主服务器上。
在该项目中,有两个重点:
1、 一定要保证主服务器的负载要轻,在该方案中,主服务器只负责承载主会场的音频和视频,以及128个点文字聊天的中转,流畅完全可以得到保证。
2、 因为有128个点,因此必须借助边缘服务器,在该项目中,有4台边缘服务器负责承载来自普通用户的音频和视频,在要求不很高的情况下,应该可以满足需要,当然,如果对普通用户的音频和视频要求也比较高的话,可以适当增加边缘服务器。
要实施负载均衡需要:
1.源服务器(1台)
2.边缘服务器(若干)
3.负载均衡服务器(1台)
源服务器和负载均衡服务器启动, 边缘服务器每次启动关闭都要向负载均衡服务器发送消息,定时发送自己负载人数。 客服端连接只能连接均衡服务器,负载均衡服务器向客服端发送边缘服务器列表,客服端根据服务器列表,筛选质量最好的边缘服务器连接。
更加详细的资料参考:http://blog.csdn.net/qdzx2008/article/details/2051381(
负载均衡技术全攻略
)