fms 集群方法测试

来源:互联网 发布:淘宝助手怎么上细节图 编辑:程序博客网 时间:2024/05/30 04:36


目标:


向某一台FMS推送数据流,该FMS负责向集群内的其他FMS转发,从而为客户端访问均衡到各FMS打下基础。


FMS版本:FMS3.5.2专业版


实现方式:


修改FMS上服务端应用live的源码,增加转发功能。我们知道服务器上源文件asc经过了far工具的压缩处理,想要看到其源码只需要修改其后缀为rar,然后用7ZIP解压即可。


解压后得到main.asc,其代码量并不大,在代码中加入如下函数:

application.onPublish = function(client, myStream) {nc = new NetConnection();nc.connect("rtmp://xxxx/live");//nc.onStatus = function(infoObj)//{////};ns = new NetStream(nc);ns.attach(myStream);ns.publish(myStream.name,"live");trace("Clinet Start Publish to FMS!!!!");};

这样FMS在收到Client的推送请求时,即会建立起一个到IP地址xxxx的连接,我们将客户端推送的流绑定到该连接上,从而实现转发的功能。

自己尝试将修改后的main.asc连同之前解压得到的其他几个文件一起使用far工具打包,得到的main.far实测不能正常工作。后来采用将原始main,rar中

main.asc文件替换为自己修改的版本(使用7zip替换),测试后能实现转发功能。

测试结果:

使用FlashPlayer连接两台FMS后均能正常收到流,但边缘FMS相比源FMS稳定性差很多,较常出现视频的卡顿缓冲。估计是因为多了一次RTMP的转发导致,交换源FMS与边缘FMS,结论还是不变,可以排除是服务器带宽不足导致。

另外,服务器上ASC的调试方法是通过trace写日志到文件中,日志文件位于:

Adobe\Flash Media Server 3.5\logs\_defaultVHost_\live\_definst_ 下。

不知道高版本的FMS是否有所改进,另外是否可以通过为连接添加onStatus回调函数来提高源FMS与边缘FMS之间线路稳定性。

结论:

需要高稳定性的FMS推送集群方案时,建议还是由推送源推送多路给各个FMS服务器,缺点是对推送源的上行带宽要求较高。

今后若有时间再继续深入改进本方案。

参考:

FMS Dev Guide.pdf


0 0