EasyDarwin开源流媒体云平台设计与实现(分布式+负载均衡)
2016-06-03 19:28
941 查看
前言
早在2013年我就设计了一套架构非常简单的分布式流媒体服务器平台《基于Darwin实现的分布式流媒体直播服务器系统》,当时的考虑如今看来有诸多的细节点没有考虑到:1、CMS是单点部署,无法扩展设备注册节点服务器;2、EasyDarwin流媒体服务器虽然可以分布式部署,但负载信息都是以Hash map的形式存在CMS的内存中的,EasyDarwin与CMS保持着长连接信令交互,这种形式只能够实现功能,但在架构扩展性上还是有太多瓶颈;3、协议采用的是RTSP协议及其扩展字段来做的,协议对现在流行的平台无关和移动端都不是很友好;全新的EasyDarwin流媒体云平台,突出云平台的概念,无论是EasyCMS设备管理与接入服务器,EasyDarwin流媒体服务器,还是后续要扩展的EasyRMS录像存储服务器,都能够分布式、平行部署、无限扩容,云端各个节点的服务单元都将负载信息写到共享的redis中进行数据共享,EasyCMS将在线设备相关信息写入到redis,EasyDarwin将负载信息和流媒体直播相关信息写入redis,这样在多个EasyCMS、EasyDarwin之间就可以进行直播级联,Session共享,Token验证等功能,框架图:
实现概述
EasyDarwin开源流媒体云平台在2016.06.01发布了第一版,这个版本架构涉及四个方面的单元:EasyCMS 设备接入与管理服务器
EasyDarwin 流媒体服务器
EasyCamera 摄像机
EasyClient 客户端
EasyCamera 摄像机硬件在启动后,启动EasyCamera进程,向EasyCMS平台发送注册报文,并定期发送保活报文,维持摄像机与EasyCMS平台的TCP长连接;
EasyCMS会对EasyCamera发送的注册报文进行权限验证,将验证通过的设备相关信息写入到redis中,包括设备所在的EasyCMS的信息关联写入redis;
EasyClient向EasyCMS请求具体设备直播流,EasyCMS会在第一步在redis中查找设备是否在线,第二步会查找该设备是否已经存在流媒体转发信息,如果存在,则直接将改直播流信息响应给EasyClient,如果不存在,EasyCMS需要向EasyCamera发送启动直播流推送的命令,EasyCMS再将EasyCamera反馈的结果响应给EasyClient,EasyClient根据收到的结果进行播放;
EasyDarwin在接收到EasyCamera直播推送后,将该设备的直播流信息写入到redis中,这样就方便第3步中EasyCMS直接对设备直播流信息进行检索;
EasyDarwin会定期检查设备直播流的客户端数量检查,当设备的Output数量由 > 0 减为0,或者在EasyDarwin内部巡检中发现规定事件内没有客户端请求,EasyDarwin会向EasyCMS发送设备直播流释放请求,EasyCMS再通过信令发送给EasyCamera,停止EasyCamera向EasyDarwin推送直播流;
这就是整个EasyDarwin开源云平台直播的流程简述,内部有比较多的细节过程,这里就不一一细述了,具体还要看我们EasyDarwin云平台的实现源码和详细协议报文;
后续迭代
实现EasyDarwin开源流媒体云平台v1.0版本只是云平台迭代的开始,后续云平台一方面将会接入EasyCamera手机端、EasyNVR等设备,另一方面平台内部将会进一步优化平台架构,加入EasyRMS录像与回放服务,智能分析服务,等其他服务器单元,EasyDarwin云平台在对外接口上做减法,客户端RESTful接口调用非常简单,设备接入与交互流程协议也非常易懂,对内做加法,云平台会扩展更多的相关服务单元;源码下载
Github:https://github.com/EasyDarwinEasyClient:http://fir.im/EasyClient
EasyCamera摄像机硬件:http://www.easydarwin.org/camera/EasyCamera_HX_HI3518C_H.html
相关视频教程:http://edu.csdn.net/agency/index/213
获取更多信息
邮件:support@easydarwin.orgWEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2016
相关文章推荐
- 网易视频云:浅谈视频通信技术的发展
- 网易视频云分享:消息队列设计中如何保证同一用户的消息按序处理
- 云计算:虚拟化技术—— 介绍
- 1.1到底什么是云计算
- 让我们愉快的谈一下云计算的安全吧
- 为什么选择Kubernetes作为云平台的微服务治理框架 | 网络公开课
- EduSoho,中国首款结合云计算的开源在线教育软件,源码下载
- Hadoop云计算平台在视频转码上的应用,书籍免费下载
- 我的第一个安卓工程:云计算环境下基于安卓的任务执行系统 (3)完成界面
- 云计算的三种服务模式:SaaS/PaaS/IaaS
- 我的第一个安卓工程:云计算环境下基于安卓的任务执行系统 (2)创建Android工程
- 我的第一个安卓工程:云计算环境下基于安卓的任务执行系统 (1)系统概述
- 网易视频云谈视频云的根基:云计算的介绍
- Azure手把手系列 3:把IT的钱花在刀刃上 推荐
- 分布式计算、并行计算及集群、网格、云计算的区别
- SkyForm CMP管理异构资源池案例
- 安装部署Liberty Neutron
- RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)
- 云计算的概念和价值(Xmind思维导图)
- OpenStack云计算快速入门教程 OpenStack及其构成简介