fms 集群方法测试


目标:


向某一台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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值