闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   有意向写收费精品教程的朋友,请联系本站合作
当前位置 :首页>flash教程>Fms教程>列表

FCS阅读笔记31 服务器集群和负载均衡

[来源:世纪流年blog | 作者:世纪流年 | 时间:2008-04-04 | 点击:  | 收藏本文  【 】]
5uflash文章摘要:本篇主要讲述在进行FCS开发过程中如何使用多个视频服务器来做集群服务和负载均衡处理。 在FCS的应用过程中,带宽消耗是一个很严重也是很现实的问题,好的解决方法就使用多个服务器进行负载均衡,也就是说使用服务器集群技术。 有三种服务器集群的方案: 1 使用专门的主
本篇主要讲述在进行FCS开发过程中如何使用多个视频服务器来做集群服务和负载均衡处理。
在FCS的应用过程中,带宽消耗是一个很严重也是很现实的问题,好的解决方法就使用多个服务器进行负载均衡,也就是说使用服务器集群技术。
有三种服务器集群的方案:
1 使用专门的主服务器来连接多个子服务器
点击查看全图
2 每台服务器既可以作为主服务器也可以充当子服务器
点击查看全图
3 每台服务器都作为主服务器
点击查看全图

那么到底哪种方式最好呢?这取决与你所做的应用,每种方式都可以满足各自不同的需要。
根据FCS应用程序的架构和流媒体的特性,为了最低限度的减少数据丢失以及数据同步问题,第三种方案不失为一种好的方案。
举个例子,假如你有个应用程序同时有1000在线用户需要连接FCS服务,而你每台服务器的带宽仅仅能够满足500个用户的需求,或许你会说为什么不用单独一台服务器来作负载均衡控制,答案很简单:多余。况且让我们设想一下,如果哪天这台服务器想要休息一下,那么你的应用会怎么样?
因此,为了安全起见,使用多个主服务器的方式最适合,至少不会发生上面所说的问题。
集群方式确定了,那么在开发过程中如何使用呢?
也有两种方式,取决你所做的应用:
1、在不同服务器之间同步
2、不同服务器之间不进行同步(严格的说不能说是集群技术)
其实两种方式的差异不用说也知道,但如果只是想减轻带宽负荷,并不想在多个服务器之间保持数据一致就可以采用第二种方式。
关于第一种方式,Jake Hilton给出了比较好的解决方式,在此也不多说,简单说明下。原理就是在进行服务器连接、发布和设置操作的时候循环对每个在线的服务器进行操作。
例如:
  1. //serverArray 是连接服务器数组
    for(var i in serverArray){ 
    this['nc'+i] = new NetConnection();
    this['nc'+i].connect(serverArrayIn[i]);
    this['nc'+i].onStatus = function(objIn){ _self.ncStatus(objIn) };
    liveServers.push(i);
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  }


在onStatus方法中会检查在线服务器,调用pingBack方法得到liveServers的值。
在应用程序的Main.asc文件中添加如下代码:
     
  1. Client.prototype.serverPing=function(srvId){ 
     
    'serverId':srvId,'serverName':application.hostname };
     
    Client.prototype.setSoObject=function(soName){ 
     
    setUpSharedObject(soName);
     
    Client.prototype.getSoValue=function(soName,propName){ 
     
    soName).getProperty(propName);
     
    Client.prototype.setSoValue=function(){  //soName,propName,propVal
    eval(arguments[0]).setProperty(arguments[1],arguments[2]);
    setUpSharedObject (soName) { 
    this[soName]){ 
    trace('setting up shared object '+soName);
    this[soName]=SharedObject.get(soName,true);
  2.   return { 
  3.  }
     
  4.  
  5.   
  6.  }
     
  7.  
  8.   return eval(
  9.  }
  10.  
  11.   
  12.  }
  13. function 
  14.   if(!
  15.     
  16.     
  17.    }
  18.  }

把Main.asc文件放到你的FCS应用程序目录下面后重启应用。

客户端测试代码示例:
     
  1. import com.sitename.MultiConnection
     
    = new  MultiConnection();
     
    mc.connect(['rtmp://server1.com/test','rtmp://server2.com/test']);
     
    mc.onStatus = function(objIn){ 
     
    trace(objIn.code);
     
    objIn.code == 'NetConnection.Setup.Success'){ 
     
    mc.sharedObjectSetup ('info_so',true);
     
    mc.setNetStreams();
     
    myMic Microphone.get();
    mc.attachAudio(myMic);
    mc.nsStatus=function(objIn){ 
    trace(objIn.code);
    mc.publish ('webCastName','live');
    mc.info_so_sync = function(){ 
    trace('so synced');
  2. mc 
  3.  
  4.  
  5.   
  6.   if(
  7.     
  8.     
  9.     
  10.     
  11.     
  12.       
  13.      }
  14.     
  15.    }
  16.  }
  17.  
  18.   
  19.  }


代码连接多个服务器,并且在每个服务器上创建共享对象info_so,并且通过info_so_sync 方法来同步。

下载 完整的类和示例程序

第二种方法就更简单了,把实现思路说明一下。
在客户端判断不同的聊天室或者不同的用户ID,转向不同的FCS服务器。服务器端代码不需要任何修改,客户端只需做一个引导程序~


文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:Flv网络播放器制作全攻略
下一篇:Programming FCS 一书终于出版了
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  教程分类
  基础操作   动画特效
  应用开发   组件学习
  As程序   动画教程
  Flash cs3   AS 3.0
  FCS/FMS教程   Loading教程
  Flash与Web   Flash教程连载
  Flash 3d
  相关文章
·fms录制不能生成flv的问题解决办
·Flash Media Server入门(关于在
·新的Flash Media Server
·flv在线播放的教程
·Learning Flash Media Server 3
·FMS 3.5 正式出售
·从FMS服务器读取文件(图片/SWF/
·FMS在线客服系统(客户端篇)
·FMS在线客服系统(fms脚本)
·FMS在线客服系统(分析篇)
  热门文章
·Flash进度条的制作详细讲解(组图)
·Flex 3 AdvancedDataGrid的使用(第二
·全Flash动画网站实现的基础教学
·FLASH+XML相册(附源码)
·FLV播放器汇总
·flash幻灯片网页效果
·超酷flash光晕移动效果
·Flash打造简单的飘雪动画视觉特效
·flash水影效果字
·flash春雷闪电效果
·Flash制作大雪纷飞效果动画
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号