cdn-直播-点播-技术简介
由于一些朋友对pcdn(p2p + cdn)中cdn也有一定的了解需求,故将以前的cdn基本介绍文档进行发布,方便大家了解交流。
交流qq: 215420465
————————————————————————————————–
1 声明
本文将对于互联网直播点播系统的需求而制定的方案建议书。本文为原创文章,不涉及任何第三方技术文章版权,不引用任何第三方保密或专利技术内容,不侵犯任何第三方著作权。同时,作者对本文享有著作权,第三方在未获取作者授权的前提下,禁止对方案书进行传播、使用、以及任何形式的内容引用。
2 整体概述
本方案书通过分析常规CDN需求,基于主流的软件技术,通过架构互联网直播点播软件系统打造具有针对性的直播点播CDN方案。该系统将实现为硬件服务器可弹性伸缩以支持小到几百几千,大到上百万上千万的直播点播并发能力,支持主流协议与格式,完善的容灾能力,便捷的安装、部署、运维、使用。
CDN直播点播系统涵盖内容广泛,本文将涉及但无法一一详尽阐述,主要目的是描述清楚系统总体架构以及各个部分的设计、功能、实现等。
cdn系统主要原理为将直播点播内容分发到各个cache缓存节点,通过调度算法将终端调配到最优的cache缓存节点以实现流畅的服务体验,CDN系统主要包含如下4个子系统:
- CDN直播系统,包含直播流从源向各个cache节点快速流畅分发、接入源调度,播放调度,源端多直播协议与格式的支持,终端多直播协议与格式的支持,核心调度、推流鉴权,回源鉴权,直播录制转码等。
- CDN点播系统,包含点播文件的主动分发、被动分发、缺失文件回源补偿、冷门文件过期删除、视频文件转码转格式等。
(3)CMS流媒体资源管理系统,该系统主要是用于直播点播的频道管理,资源管理,转码设置,录制设置,分辨率设置,简要的视频剪辑,广告管理,终端用户账户管理,各维度粒度统计,授权,计费等一系列业务相关的功能集合。
(4)CDN运维系统主要提供给运维人员进行系统状态的监控,可结合成熟稳定的第三方开源运维系统二次定制,该系统监管所有CDN节点的运行状态,包括磁盘、cpu、内存、IO、服务状态等,当发生异常情况主动尝试恢复故障并进行邮件短信告警。
系统整体关系简图
3 详述
3.1 CDN直播系统
3.1.1 功能
- 一套主流、高可靠、可扩/收容的直播系统。
- 源支持rtmp/http/udp等多种协议。
- 播放支持主流的 hls、hdl、rtmp 协议。
- 支持首屏秒开。
- 单点支持G口带宽能力或1W并发能力。
- rtmp与hdl支持低延迟。
- 支持录制,转码,可搭配CDN点播系统提供点播回看。
- 支持rtmp hls hdl三种协议支持动态防盗链,保护内容安全。
- 支持回源鉴权。
- 各部分支持集群,分布式部署。
- 优秀的流分发、用户播放调度策略。
- 服务器之间直播流分发基于IP地址,根据区域与运营商最优化选择。
- 可以控制每个推送, 中继,边缘播放的直播服务器带宽。
- 播放终端采用精确IP库选择最优播放节点。
- 支持PC端以及移动端等的流畅播放需求。
- 提供详尽的日志与灵活的日志格式,用于大数据分析,带宽统计。
3.1.2 架构设计
直播系统具有灵活多变的组合方式,以满足不同的应用场景。下面提供最小与完整型架构模型图作为参考。其他组合方式可在两种模型之间灵活调整。
- 最小CDN直播系统架构:
说明:最小直播系统,提供一台直播流媒体服务器,该服务器向源获取到直播流并缓存下来,当用户请求直播流的时候将数据发送给用户提供播放。同时直播流服务器按照预设策略进行直播录制,录制完成以后,触发转码服务器完成转码为标准视频文件以提供点播回看。
- 完整型CDN直播系统架构:
说明:系统各部分均可根据需要扩展或收窄服务能力,也可增加或拆解某部分以适应实际场景。
完整型CDN直播系统主要包含如下几个部分:
- 流分发调度:负责直播流的分发路线选择。
- IP调度:负责通过IP匹配调度到最优的服务器。
- 收流服务器:从源将直播流收取下来。
- 中继服务器:核心多线服务器,用于跳板传输,以保障跨区域运营商的直播流流畅服务。
- 边缘服务器:用于直接服务用户。
流程概述:
- 首先通过DNS域名解析或者IP精确匹配,找到一台优质的收流服务器。
- 收流服务器进行源的接收。
- 收流服务器向流分发调度请求一台优质的中继服务器,并将该直播流与中继的匹配关系记录到缓存记录中。
- 收流服务器将直播流推送到中继服务器。
- 用户发起播放请求,通过DNS域名解析或者IP精确匹配,找到一台优质的边缘服务器。
- 用户向该边缘服务器发起播放请求。
- 边缘服务器向流分发调度请求中继服务器地址,流分发调度通过查询缓存记录,找到该路流位于哪一台中继服务器。
- 边缘服务器向中继服务器拉取直播流提供用户播放。
3.2 CDN点播系统
3.2.1 功能
- 建立可根据需要横向扩容存储与带宽的视频CDN点播系统。
- 基于用户端IP根据网络类型,运营商实行精确调度,将用户调度到用户体验最好的节点。
- 可以控制每个cache节点的使用带宽,满足使用满一个节点带宽后在使用下一个节点,也可满足负载均衡使用。
- 调度支持 PC,移动端对系统的访问请求。
- 支持主动同步,可以主动将热门内容预先全网分发到所有节点上
- 支持逐级同步,区分运营商,区域,的逐级同步,实现高效同步。
- 支持被动回源站同步,以解决冷门文件的自动化同步以及节点文件丢失后的自动恢复。
- 运营商可虚拟节点,节点下挂接多个cache,cache之间支持哈希分布式存储以提高存储利用率,减少重复存储的资源消耗。
- 单个cache支持挂载多个物理磁盘,采用哈希存储提高存储能力,解决点播中的磁盘IO性能瓶颈。
- 支持所有格式文件的同步并提供下载服务。
- 支持mp4,flv,ts等主流视频文件的播放与按照视频关键帧/字节拖动。
- 冷门文件的定期自动清理功能。保持磁盘不满。
- 单个cache能够并发1G以上带宽或1W/s以上并发连接。
- 支持多格式的实时的音视频转码,以支持码率自适应,多清晰度多格式兼容的需求。
- 支持动态防盗链,保护内容安全。
- 可根据需求提供内容数字加密。
- 详尽的日志与灵活的日志格式,用于大数据分析,带宽统计
3.2.2 架构设计
CDN点播系统也是灵活的组合方式,可以调整不同的架构设计以满足不同的应用场景,点播系统构型较多,无法一一例举,但原理均类似。
- 小型CDN点播架构:
流程:
- 用户通过DNS解析得到cache节点地址。
- 用户向cache点播服务器请求视频文件。
- 点播服务器检查本地本地如果有文件既直接提供服务,如果文件不存在,则回源获取文件提供服务并将文件缓存到本地。
- 大中型CDN点播架构:
说明:大中型点播系统由于服务终端量大,系统负载量大增,一般会增加一层资源服务器以缓存资源文件,防止热门文件或者新文件在大用户初次进入的时候产生大量回源而压垮源站。
流程:
- 用户通过DNS或者IP精确调度得到优质的cache节点地址。
- 用户向cache点播服务器请求视频文件。
- Cache点播服务器检查本地,如果有文件既直接提供服务,如果文件不存在,则回到上一级资源服务器获取文件提供服务并将文件缓存到本地。
- 如果资源服务器本地不存在文件,则会回源到源站获取文件并缓存到本地。
- 大中型点播系统中主动发布文件架构:
一般情况下,大中型点播系统服务的用户众多,网络运营商与区域也各不相同,这个时候如果是热门文件,一般需要预先进行发布,防止过多回资源服务器或源站。一般情况下,大中型点播系统会在不同运营商均部署有服务器,所以会在每个运营商的节点中选取一个作为该运营商的主节点,其他为从节点,这种逻辑的主从划分主要是为了减轻服务器回源次数,仅主节点回源,从节点到主节点获取文件。
流程:
- CMS(媒资管理系统)向主动同步的中央控制发布同步文件的指令。
- 中央控制会将指令同步到所有的cache节点,并告知每个cache节点到哪里同步文件,比如告诉主节点到源站同步文件,告诉从节点到主节点同步文件。
- 主节点开始同步文件数据到本地,同步完成以后将同步状态上报到中央控制,中央控制通知从节点到主节点同步数据。
- 从节点收到开始到主节点同步文件的信令以后,开始到主节点同步数据。同步完成以后上报到同步中控。
3.3 转码系统
3.3.1 功能
所有转码系统一般均基于ffmpeg开源库裁剪并二次开发得到,转码由于消耗硬件资源高,转码时间长,一般采用集群化设计以提高转码负载能力。
- 支持集群化,可横向扩容收容。
- 支持各类音视频文件的封装格式转换,编码算法转换,视频缩放,视频截取裁剪,码率压缩,帧率转换,提取视频帧等。
3.3.2 架构设计
3.4 流媒体资源管理系统
3.4.1 功能
该系统为上层业务系统,涵盖功能点如下:
- 超大短链接并发能力,可横向扩容收容。
- 完善的缓存机制设计,保障数据实时性的同时降低数据库压力。
- 核心数据的安全性完整性保障。
- 抵御超大规模的各类网络攻击。
- 直播频道的增删改查。
- 点播频道的增删该查。
- 管理直播的录制,转码,回看发布,回看下架,监控直播状态。
- 管理点播的转码,发布,分发,下架等,监控点播状态。
- 简要的点播文件剪辑功能。
- 直播点播在线预览。
- 管理直播点播频道的相关带宽统计,流量统计。
- 管理广告展示,广告计费。
- 管理用户账户,鉴权,服务,计费,支付等。
- 进行用户行为分析展示,用户画像等。
- 处理各个需求维度与粒度的大数据收集、处理、展示。
- 其他相关业务需求。
3.4.2 架构设计
3.5 运维系统
3.5.1 功能
该系统通常使用开放源代码的第三方成熟稳定的分布式监控系统作为基础,再采用脚本语言定制开发满足需求的监控系统,一般结构为分布式,主服务器用于收集监控信息存入数据库,寄宿监控服务部署到各个需要监控的服务器上。
一般包含的的状态指标为:宕机,cpu,磁盘容量,磁盘IO,内存,带宽等。
- 监控CDN各个节点与服务器的各项状态指标,服务状态。
- 监控流媒体资源管理系统各个服务器的各项状态指标。
- 监控转码系统各个服务器的各项状态指标。
- 其他监控项加入。
- 自定义邮件短信告警。
- 自动化的服务恢复。
3.5.2 架构
3.5 安全防御与容灾简述
3.5.1 安全防御
互联网安全为各类系统正常服务的根本,遭受攻击而造成服务瘫痪,丢失用户并造成损失的情况每天都在发生,故安全是软件服务的重中之重。
防御简介:
- 采用稳定,较新的linux操作系统。
- 防火墙端口限制,黑白名单限制。
- 远程登录避免root用户,避免22端口,一般采用ssh的key登录,关注远程工具安全性,选择优秀的远程工具。
- 采用跳板机登录,目标服务器限制可登录的白名单。
- 注意使用的各项软件或框架存在的漏洞,发现或公布漏洞以后,使用官方补丁或更改配置项及时修复漏洞。
- 数据的实时备份,一般保存于数据库的重要数据,采用主从机制实时备份,数据库,缓存等限制可链接的IP白名单。
- CDN直播点播服务需进行动态防盗链防御,并启用回源鉴权机制。
- 业务服务器需防御跨站请求伪造,设置相同IP的请求频次限制。可使用一般机房提供硬件防御,如不能满足防御需求,可采用第三方防御,隐藏主机IP,抗D,抗流量攻击。
3.5.2 容灾
容灾是保障服务正常的关键,如发生宕机,单机挂服务的情况,不能影响全局服务。
容灾简介:
- CDN直播点播服务器在单机挂机的情况下,可通过调度感知,失去心跳保活以后,调度将不再调配出现问题的节点进行服务。
- 业务服务器在有负载均衡的条件下,可以通过负载均衡感知服务是否挂掉,挂掉以后切换到其他正常服务器进行服务。
- 业务服务器在DNS作为负载的情况下,可以通过keepalive进行多机之间的互为保活,出现某台机器挂掉,其他机器可接管服务。
- 数据库的容灾,一般情况下做好数据实时备份,可手动快速通过DNS切换数据库。也可以借助数据库自生的集群互为备份机制自动切换服务。
- 人工参与容灾也很重要,很多情况无法一一列举,也无法一一规避,及时通过监控系统获取到灾难信息,参与解决灾难,也是重要的手段。
原文链接:https://blog.csdn.net/weiyangliuxingyu/article/details/108949402?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918321816781685358459%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918321816781685358459&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-10-108949402-null-null.nonecase&utm_term=cdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/322