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);
e) StreamService.play()
f) PlayEngine.play()
g) File file = ProviderService. getVODProviderFile(scope, name)获取文件
h) msg = msgIn.pullMessage();//会生成*.flv.meta文件
i) 它是支持文件夹目录的
5. 自己的想法
java/spring/mina
边、源:
边有效保护了源上媒体的安全
减小源负载连接
边有压缩作用的意味:将所有连接的请求复用
边任务:流分离、流缓存
和源建立好连接后,客户端的请求可以利用这个连接
在边上可以做统计流量
分享到:
相关推荐
资源名称:Red Hat高可用集群原理、构建与排错内容简介: Red Hat HA工作原理流程:Active/Backup模式;产生并检查统一配置文件:cluster.conf;通过组播或者广播传递Heartbeat或totem;Quorate:Votes>=1/2 total ...
Red5作为流媒体服务器,它的工作原理是接收来自客户端的流媒体请求,处理这些请求,并将音视频数据分段传输给客户端,实现边下边播的效果。 在Red5 1.0.7M10这个版本中,可能包含以下关键知识点: 1. **RTMP协议...
Red5是一款开源的流媒体服务器,它支持实时流协议(RTMP)、文件传输协议...通过理解和实践`oflaDemo`,你不仅能掌握Red5的基础操作,还能深入了解流媒体服务器的工作原理,为进一步开发和优化流媒体应用打下坚实基础。
学习和理解Red5的源代码,可以帮助开发者深入掌握流媒体服务器的工作原理,定制自己的流媒体解决方案,或者为现有系统添加新的功能。对于有兴趣在流媒体领域进行开发的人来说,这是一个宝贵的资源。
6. **分布式架构**:RED5支持集群部署,可以将负载分散到多个服务器上,提高系统的稳定性和可伸缩性。 7. **开源社区**:RED5有一个活跃的开源社区,不断更新和完善服务器功能,同时也提供了丰富的文档和示例代码供...
2. **ActionScript/Flash**:Red5与Flash Player交互,因此理解ActionScript和Flash编程原理也很重要。 3. **RTMP协议**:Red5主要基于RTMP协议传输流媒体,理解其工作原理对开发有帮助。 4. **Maven或Gradle**:...
Red5是一款开源的Java流媒体服务器,它支持实时流传输协议(RTSP)...提供的压缩包资源将帮助你理解Red5的工作原理,进一步掌握Red5服务器的使用和开发。通过深入学习和实践,你将能够利用Red5搭建高效稳定的流媒体平台。
5. **分布式部署**:Red5支持集群部署,可以将负载分散到多台服务器上,提高系统稳定性与可扩展性。 ### 安装与配置 1. **环境准备**:Red5需要Java运行环境(JRE),因此在安装前需确保系统已安装Java。 2. **...
- **分发和负载均衡**:通过集群部署,Red5可以实现流媒体的负载均衡和内容分发。 2. **工作原理**: - **服务器架构**:Red5基于Java技术,使用Servlet容器(如Tomcat)运行,提供了插件化的设计,便于扩展和...
在压缩包“Red5Source”中,包含了Red5的源代码,开发者可以深入了解其内部工作原理,进行二次开发或调试。源代码通常包含以下几个部分: 1. **Server Core**:核心服务模块,负责启动和管理Red5服务器,处理客户端...
- **Terracotta Clustering**: 虽然Red5并未直接使用Terracotta,但其设计理念对Red5的集群支持产生了积极影响。 - **Spring**: 使用Spring框架进行依赖管理和模块化设计,提高了系统的灵活性和可维护性。 #### 三...
根据给定文件的信息,我们可以深入探讨Red Hat Enterprise Linux 5(RHEL 5)集群管理的知识点,这包括配置、管理以及与之相关的各种技术细节。 ### 集群概念 集群是通过网络连接在一起的一组独立计算机,它们共同...
GFS2 是 Red Hat Enterprise Linux 5 中的一个组件,用于实现集群环境中的文件共享和高可用性存储。 GFS2 的主要特点包括: 1. 高可用性:GFS2 可以在多个节点之间共享文件系统,以便在节点故障时提供高可用性。 2...
构建高效的MySQL集群不仅需要合理的硬件选型与软件配置,更依赖于对集群原理的深入理解与实践。通过上述步骤,我们能够搭建起一套稳定、高效且具备自我恢复能力的数据库集群,为企业的业务连续性提供坚实的支撑。在...
Red Hat Ceph Administration Guide 是一份全面的技术文档,旨在指导用户如何高效地管理 Ceph 存储集群。无论是对于初学者还是经验丰富的管理员来说,这份指南都极具价值。通过阅读本指南,读者可以学习到如何管理 ...
本篇文档为《Red Hat Ceph 存储系统架构指南》,详细介绍了 Ceph 存储架构的设计理念、组件和工作原理。 文档的最新更新日期为2018年2月15日,其内容遵循 Creative Commons Attribution–ShareAlike 3.0 Unported ...
- 使用DNF管理软件:理解DNF的工作原理,掌握安装、更新、查询和卸载软件包的方法。 - 编译源码安装:了解如何从源代码编译和安装软件。 5. **系统服务与启动流程**: - systemctl管理服务:掌握使用systemd控制...
总结,服务器集群配置是一个涉及多方面技术的综合性工程,理解其基本原理,掌握配置方法,并不断优化和调整,是保障业务连续性和系统效率的关键。通过实践和学习,你将能够成功构建起自己的服务器集群环境。