`

RED5集群原理

 
阅读更多

 

1.  边(Edge ):

1.   边的主要作用是管理连接,并可以复用

2.   当添加边时,集群里会广播该边的消息

3.   边连接源通过MRTMP:9035

4.   边上不需要部署服务

5.   边和源最好不要同一台机器

6.   连接由SimpleMRTMPEdgeManager管理,可自己实现IMRTMPEdgeManager

7.   它和客户端是长连接,故有连接数限制

2.  源:(origin

1.   当添加源时,该源的其他边会自动连上来

              i.      因为如果边连接不到源(或者源中途停了),则会不断地隔时连接

3.  边启动--开放一个端口:RTMP用于监听客户端

1.   监听客户端minartmp:调用RTMPMinaTransportstart方法 ,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.   连接源minamrtmp:根据red5-edge-core.xml里面配置MRTMPClientstart方法,创建线程轮循连接源,用于与源之间的连接,等待源返回资源,将资源发给客户端

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.   调用MRTMPMinaTransportstart方法,该方法会监听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);

e)   StreamService.play()

f)   PlayEngine.play()

g)   File file = ProviderService. getVODProviderFile(scope, name)获取文件

h)   msg = msgIn.pullMessage();//会生成*.flv.meta文件

i)   它是支持文件夹目录的

5.  自己的想法

java/spring/mina

边、源:

    边有效保护了源上媒体的安全

    减小源负载连接

    边有压缩作用的意味:将所有连接的请求复用

    边任务:流分离、流缓存

    和源建立好连接后,客户端的请求可以利用这个连接

    在边上可以做统计流量

 

分享到:
评论

相关推荐

    RedHat高可用集群原理、构建与排错

    资源名称:Red Hat高可用集群原理、构建与排错内容简介: Red Hat HA工作原理流程:Active/Backup模式;产生并检查统一配置文件:cluster.conf;通过组播或者广播传递Heartbeat或totem;Quorate:Votes>=1/2 total ...

    red5 1.0.7M10

    Red5作为流媒体服务器,它的工作原理是接收来自客户端的流媒体请求,处理这些请求,并将音视频数据分段传输给客户端,实现边下边播的效果。 在Red5 1.0.7M10这个版本中,可能包含以下关键知识点: 1. **RTMP协议...

    red5之oflaDemo

    Red5是一款开源的流媒体服务器,它支持实时流协议(RTMP)、文件传输协议...通过理解和实践`oflaDemo`,你不仅能掌握Red5的基础操作,还能深入了解流媒体服务器的工作原理,为进一步开发和优化流媒体应用打下坚实基础。

    red5 流媒体 源代码

    学习和理解Red5的源代码,可以帮助开发者深入掌握流媒体服务器的工作原理,定制自己的流媒体解决方案,或者为现有系统添加新的功能。对于有兴趣在流媒体领域进行开发的人来说,这是一个宝贵的资源。

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

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

    red5-eclipse-plugin-master.zip

    2. **ActionScript/Flash**:Red5与Flash Player交互,因此理解ActionScript和Flash编程原理也很重要。 3. **RTMP协议**:Red5主要基于RTMP协议传输流媒体,理解其工作原理对开发有帮助。 4. **Maven或Gradle**:...

    red5-oflaDemo+入门教程

    Red5是一款开源的Java流媒体服务器,它支持实时流传输协议(RTSP)...提供的压缩包资源将帮助你理解Red5的工作原理,进一步掌握Red5服务器的使用和开发。通过深入学习和实践,你将能够利用Red5搭建高效稳定的流媒体平台。

    Red-Server 1.0.10

    5. **分布式部署**:Red5支持集群部署,可以将负载分散到多台服务器上,提高系统稳定性与可扩展性。 ### 安装与配置 1. **环境准备**:Red5需要Java运行环境(JRE),因此在安装前需确保系统已安装Java。 2. **...

    red5-1.0.0-RC2.zip

    - **分发和负载均衡**:通过集群部署,Red5可以实现流媒体的负载均衡和内容分发。 2. **工作原理**: - **服务器架构**:Red5基于Java技术,使用Servlet容器(如Tomcat)运行,提供了插件化的设计,便于扩展和...

    Red5 java source

    在压缩包“Red5Source”中,包含了Red5的源代码,开发者可以深入了解其内部工作原理,进行二次开发或调试。源代码通常包含以下几个部分: 1. **Server Core**:核心服务模块,负责启动和管理Red5服务器,处理客户端...

    Red5_Flash服务器研究.pdf

    - **Terracotta Clustering**: 虽然Red5并未直接使用Terracotta,但其设计理念对Red5的集群支持产生了积极影响。 - **Spring**: 使用Spring框架进行依赖管理和模块化设计,提高了系统的灵活性和可维护性。 #### 三...

    Red_Hat_Enterprise_Linux-5-Cluster_Administration-en-US.pdf

    根据给定文件的信息,我们可以深入探讨Red Hat Enterprise Linux 5(RHEL 5)集群管理的知识点,这包括配置、管理以及与之相关的各种技术细节。 ### 集群概念 集群是通过网络连接在一起的一组独立计算机,它们共同...

    Red Hat Enterprise Linux 5 Global File System 2

    GFS2 是 Red Hat Enterprise Linux 5 中的一个组件,用于实现集群环境中的文件共享和高可用性存储。 GFS2 的主要特点包括: 1. 高可用性:GFS2 可以在多个节点之间共享文件系统,以便在节点故障时提供高可用性。 2...

    Mysql 高效集群配置

    构建高效的MySQL集群不仅需要合理的硬件选型与软件配置,更依赖于对集群原理的深入理解与实践。通过上述步骤,我们能够搭建起一套稳定、高效且具备自我恢复能力的数据库集群,为企业的业务连续性提供坚实的支撑。在...

    red hat ceph administration guide

    Red Hat Ceph Administration Guide 是一份全面的技术文档,旨在指导用户如何高效地管理 Ceph 存储集群。无论是对于初学者还是经验丰富的管理员来说,这份指南都极具价值。通过阅读本指南,读者可以学习到如何管理 ...

    Red_Hat_Ceph_Storage-2-Architecture_Guide-en-US

    本篇文档为《Red Hat Ceph 存储系统架构指南》,详细介绍了 Ceph 存储架构的设计理念、组件和工作原理。 文档的最新更新日期为2018年2月15日,其内容遵循 Creative Commons Attribution–ShareAlike 3.0 Unported ...

    red hat9应用教程

    - 使用DNF管理软件:理解DNF的工作原理,掌握安装、更新、查询和卸载软件包的方法。 - 编译源码安装:了解如何从源代码编译和安装软件。 5. **系统服务与启动流程**: - systemctl管理服务:掌握使用systemd控制...

    服务器集群配置详细教程

    总结,服务器集群配置是一个涉及多方面技术的综合性工程,理解其基本原理,掌握配置方法,并不断优化和调整,是保障业务连续性和系统效率的关键。通过实践和学习,你将能够成功构建起自己的服务器集群环境。

Global site tag (gtag.js) - Google Analytics