`
阅读更多

1. 边(Edge ):
1. 边的主要作用是管理连接,并可以复用
2. 当添加边时,集群里会广播该边的消息
3. 边连接源通过MRTMP:9035
4. 边上不需要部署服务
5. 边和源最好不要同一台机器
6. 连接由SimpleMRTMPEdgeManager管理,可自己实现IMRTMPEdgeManager
7. 它和客户端是长连接,故有连接数限制
2. 源:(origin)
1. 当添加源时,该源的其他边会自动连上来
i. 因为如果边连接不到源(或者源中途停了),则会不断地隔时连接
3. 边启动--开放一个端口:RTMP用于监听客户端
1. 监听客户端mina,rtmp:调用RTMPMinaTransport的start方法 ,EdgeRTMPMinaIoHandler,                 用于接收客户端请求,并向源取数据
a) 与客户端建立长连接:
i. EdgeRTMPMinaIoHandler.sessionCreated()=>
ii. EdgeRTMPMinaIoHandler.createRTMPMinaConnection()
iii. RTMPConnManager.createConnection()=>
iv. 创建EdgeRTMPMinaConnection并根据hashCode计算出conn.setId()
v. RTMPConnManager.connMap存放(conn.getId(),conn)
b) 访问资源:
i. EdgeRTMPMinaIoHandler.messageReceived()=>
ii. EdgeRTMPHandler.messageReceived()=>
iii. handleConnect()=>
iv. sendConnectMessage(conn)()=>
v. SimpleMRTMPEdgeManager.lookupMRTMPConnection(conn)
vi. 将客户端请求资源转发给源
2. 连接源mina,mrtmp:根据red5-edge-core.xml里面配置MRTMPClient的start方法,创建线程轮循连接源,用于与源之间的连接,等待源返回资源,将资源发给客户端
a) 建立连接
i. 如果和源建立好连接后mrtmpManager.registerConnection(conn);
b) 源返回资源:
i. EdgeMRTMPHandler. messageReceived()=>
ii. conn =rtmpConnManager.getConnection(clientId);
iii. conn.write(rtmpBody.getRtmpPacket());
iv. 即将源返回的资源发给客户端
4. 源启动--开放两个端口:MRTMP用于监听边,8080用于应用(是否必须?)
1. 由org.red5.server.Bootstrap入口:并找到red5.xml并交给spring初始化,
2. 通过red5.xml=》red5-origin-core.xml
3. 调用MRTMPMinaTransport的start方法,该方法会监听9035端口(等待边的连接)
4. 与边建立连接
a) 源执行OriginMRTMPHandler.sessionCreated()注册连接
b) SimpleMRTMPOriginManager.registerConnection(conn);
5. 收到拿资源、返回资源:
a) OriginMRTMPHandler.messageReceived()=>
b) BaseRTMPHandler. messageReceived()=>
c) BaseRTMPHandler.onInvoke();=>
d) RTMPHandler.onInvoke()=>根据协议中的path可以知道tcUrl=rtmp://localhost:1933/helloWorld中的helloWorld,再通过它找到red5-web.xml
i. channel.write(reply);=>
ii. connection.write(packet);

分享到:
评论
1 楼 Gandhi 2011-10-06  
讲得挺清楚的啊,排解了我很多疑惑。不知道你有没有尝试使用terracotta结合Red5实现集群功能呢?我最近在研究Red5集群,没有太多头绪...

相关推荐

    redflag linux 培训资料

    包含redflag linux 性能分析 集群解决方案ppt

    谷歌开源的容器集群管理系统Kubernetes.zip

    3.1.7. Scheduler Scheduler收集和分析当前Kubernetes集群中所有Minion节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。由于一旦Minion节点的资源被分配给Pod,那这些资源就不...

    论文研究-基于主动队列管理的集群计算负载平衡系统.pdf

    在分析了分组到达率和服务率的关系及主动队列管理AQM(Active Queue Management)的Balanced RED算法的基础上,提出了一个计算连接权重的动态分配算法“基于AQM加权时序动态法”(Weighted Opportunity Dynamic ...

    基于 Linux的集群系统建设与研究

    然后从硬件和软件配置方面设计集群系统,将4台PC机通过100 mbps的交换机连接建立集群,操作系统为Red Hat Linux 9,并采用了基于网络地址转换(NAT)的负载均衡技术,建立了较高性价比、高可靠性的Web应用服务器。...

    rhdg8-server:此存储库演示了最新版本的Red Hat Data Grid 8的一些基本功能以及如何在OCP和RHEL上部署RHDG集群

    红帽数据网格8服务器该存储库演示了Red Hat最新Data Grid版本的一些基本功能,以及如何在OCP和RHEL上部署Data Grid集群。 目录 1.简介红帽数据网格是一种内存中的分布式NoSQL数据存储解决方案。 您的应用程序可以以...

    Hadoop实战手册

    服务器结构4#Hadoop试验集群的部署结构4#系统和组建的依赖关系5#生产环境的部署结构65. Red hat Linux基础环境搭建6#linux 安装 (vm虚拟机)6#配置机器时间同步6#配置机器网络环境7#配置集群hosts列表10#下载并安装 ...

    低清版 大型门户网站是这样炼成的.pdf

    1.2.7 功能强大的flv流媒体服务器red5 24 1.3 门户网站开发指导思想 26 1.4 ssh 2组合框架—门户网站开发之首选 28 1.4.1 mvc混血宠儿struts 2 28 1.4.2 幕后的财政部长spring 2.5 30 1.4.3 orm中间件香馍馍...

    搭建高可用的MongoDB集群

    MongoDB公司原名10gen,创立于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评估已增至10亿美元级别,这个高度是知名开源公司Red Hat(创建于1993年)20年的奋斗成果。高性能、易扩展一直是MongoDB的立足之本...

    quickstart-ibm-icp-for-data:AWS快速入门团队

    此快速入门自动在Amazon Web Services(AWS)云上的Red Hat OpenShift Container Platform 4.5.x集群上自动部署IBM Cloud Pak的多主服务器生产实例,以用于数据。 集群是在Red Hat CoreOS实例上的新的或现有的虚拟...

    AntJob:分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景

    蚂蚁调度AntJob-分布式任务调度系统分布式任务调度系统,纯...并进一步发展衍生成为重量级实时计算平台,集分布式计算、集群调度、配置中心、负载均衡、故障转移、跨机房冗余、作业监控告警、百亿级数据清洗、超大Red

    CentOS 6.2及新操作系统部署Hadoop的注意事项

     1 在新机器上将MR业务开启后,导致整个集群都反应很慢,运行的job几乎都被卡住;通过ganglia监控发现,机器的system cpu超过30%,机器几乎是满负载的情况。  原因分析:  RHEL 6.2和6.3系统中包含了一个新...

    java开源包5

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包8

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包4

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包7

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包1

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包11

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包2

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

    java开源包3

    支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL...

Global site tag (gtag.js) - Google Analytics