`
阅读更多

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集群,没有太多头绪...

相关推荐

    Red5边源服务器集群部署

    "Red5边源服务器集群部署"是一个关键的技术话题,它涉及到如何利用Red5开源流媒体服务器来构建分布式系统,提高服务的稳定性和性能。Red5是一款基于Java开发的流媒体服务器,能够支持RTMP、HLS、RTSP等多种协议,常...

    red5 流媒体 源代码

    8. **分布式部署**:通过集群和负载均衡,Red5可以轻松扩展以应对高并发访问,保证服务的稳定性和可用性。 9. **安全性**:Red5支持基本的身份验证和权限管理,可集成SSL/TLS实现加密传输,保护内容安全。 在解压...

    red5-live项目

    9. **可伸缩性**:为了应对流量高峰,Red5可以通过集群部署实现负载均衡,确保服务的可用性和性能。 10. **安全性**:Red5支持SSL/TLS加密,保护直播内容不被未授权访问,同时也能保护用户隐私。 这个项目“red5-...

    RED5多人会议源码

    因此,了解如何在云环境或集群中部署和扩展RED5是非常重要的。 综上所述,"RED5多人会议源码"项目涵盖了流媒体技术、客户端开发、网络协议、服务器优化等多个方面的知识,对于想要深入理解和开发此类应用的IT从业者...

    RED5流媒体服务器(解压直接运行即可)

    6. **分布式架构**:RED5支持集群部署,可以将负载分散到多个服务器上,提高系统的稳定性和可伸缩性。 7. **开源社区**:RED5有一个活跃的开源社区,不断更新和完善服务器功能,同时也提供了丰富的文档和示例代码供...

    red5-eclipse-plugin-master.zip

    Eclipse是Java开发的集成开发环境(IDE),而"red5-eclipse-plugin-master.zip"则是一个专门为Eclipse设计的插件,用于方便开发者在Eclipse中开发、调试和部署Red5应用程序。 该插件提供了以下功能: 1. **项目创建...

    RHEL5下的集群下的使用

    在Red Hat Enterprise Linux (RHEL) 5中,集群技术是一种关键的高可用性解决方案,它允许多个系统协同工作,以提供服务的连续性和故障切换能力。以下是对这个主题的详细解析: 一、集群概念 集群是将多个独立的...

    Red5 java source

    5. **分布式部署**:Red5可以通过集群部署,提高服务的可用性和负载均衡能力。 在压缩包“Red5Source”中,包含了Red5的源代码,开发者可以深入了解其内部工作原理,进行二次开发或调试。源代码通常包含以下几个...

    red5学习资料-------------

    - **负载均衡**:通过集群部署和负载均衡技术,提高Red5服务器的处理能力。 - **缓存策略**:合理的缓存策略可以减少服务器压力,提升用户访问速度。 - **日志分析**:监控和分析日志,找出性能瓶颈并进行优化。 ...

    redflag linux 培训资料

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

    Red+Hat+Enterprise+Linux+5-PPT

    **Red Hat Enterprise Linux 5 知识点详解** Red Hat Enterprise Linux(RHEL)是由Red Hat公司开发的一款商业级Linux操作系统,广泛应用于企业环境。RHEL 5是该系列的一个重要版本,发布于2007年,它带来了许多...

    linux集群体系结构

    高性能计算集群(HPC)主要用于科学计算和大数据分析,通过并行处理大量计算任务来提升整体计算能力。这种集群通常采用MPI(Message Passing Interface)协议进行节点间的通信,使得大规模的计算任务能够在多个处理器...

    从头开始搭建集群

    在深入分析给定文件内容之前,我们首先明确,本文件旨在提供一整套指导教程,即《从头开始搭建集群》。这是一份针对Pacemaker 1.1版本的详细安装指南,其中内容包括如何创建和转换一个高可用性(High-Availability)...

    MySql数据库双机集群

    本例中,使用两台运行Red Hat Enterprise Linux系统的主机作为集群的组成部分。 - **第一主机系统**:Red Hat Enterprise Linux 5.3 - Host:mail - IP:192.168.1.248 - **第二主机系统**:Red Hat Enterprise ...

    oracle数据库集群安装详细步骤

    选择合适的Linux发行版,如Red Hat Enterprise Linux或Oracle Linux。 2. **安装操作系统**:设置多路径I/O,配置集群所需的网络接口,包括公共网络、私有网络和心跳网络。 3. **安装集群软件**:如Oracle ...

Global site tag (gtag.js) - Google Analytics