搜狐视频P2P技术揭秘 – 架构篇[通俗易懂]

搜狐视频P2P技术揭秘 – 架构篇[通俗易懂]本文介绍了搜狐视频P2P的整体架构,服务组成,业务数据等。

大家好,又见面了,我是你们的朋友全栈君。

1.P2P系统

搜狐视频P2P技术揭秘 - 架构篇[通俗易懂]

服务 功能
Tracker 存储服务,存储文件和活跃P2P上传用户(以下简称矿机、Peer)的连接信息对应关系,用户信息包括用户标识、所连接Proxy的地址、地域、运营商、NAT类型等信息。实际上Tracker上的用户信息表是一个多级表,查找Peer的操作会根据文件HashId、地域、运营商、NAT类型等索引到合适的用户信息。
Proxy 代理服务,非flashp2p矿机会跟Proxy保持长连接以保证能够接收到打洞的推动请求,P2P系统内部的所有服务都通过Proxy对外提供服务。每个Proxy内部保存所有Tracker的一致性哈希表,并保持跟所有Tracker的连接,在下载用户查找Peer时会根据所查找资源的HashId哈希到某个Tracker,并在对应Tracker上调用实际的搜索请求。
Log 日志服务,用于存储客户端上报的日志。
Statistic 统计服务,统计各个平台的用户在线情况、接口调用信息。
RtmfpServer Rtmfp服务,用于flashp2p客户端直接之间的打洞,flashp2p矿机会跟RtmfpServer保持长连接。
Rtmfp-DB Rtmfp数据库,存储所有连接到Rtmfp Server的用户id到其Candidates的映射。
Gateway 入口服务,用于向客户端提供地域、运营商匹配的Proxy和Rtmfp服务,Proxy和Rtmfp服务信息由Center服务通知。
Center

中心服务,用于管理所有可用资源,主要功能有:

1.Tracker连通性测试,建立Tracker一致性哈希表,并通知到Proxy;

2.Proxy连通性测试,并将Proxy服务信息通知到Gateway;

3.Rtmfp连通性测试,并将Rtmfp服务信息通知到Gateway。

2.客户端视角

搜狐视频P2P技术揭秘 - 架构篇[通俗易懂]

      搜狐视频P2P客户端并非单纯的只走P2P的客户端,由于需要向播放器提供数据,并且P2P通道质量的不确定性,需要使用CDN来弥补数据,因此产生了节约比这个指标。节约比,又叫分享率,从微观上来讲就是在一次播放中,通过P2P下载的媒体数据占据总数据量(P2P+CDN)的比例,宏观上指在一段时间内P2P系统提供的带宽占据视频网站总可用带宽(P2P+CDN)的比例。对播放器来说,比较重要的指标是流畅率,流畅率往往和节约比是相互制约的关系,播放器P2P客户端的一个重要任务就是寻找一个兼顾流畅率和节约比的平衡点。
      

服务 功能
StunServer 用于探测NAT类型、公网地址。
Navigation

配置服务,存储不同平台的P2P客户端配置,在P2P客户端内部很多流控逻辑会参考很多阈值,这些阈值主要从这个服务获取。

Pingback Qs业务上报服务,主要收集带宽、节约比、流畅率等信息,这些信息入库后由后台统计服务进行进一步加工,最后展示成Qs页面,是业务数据的主要来源。
HotVrs

搜狐视频的所有非自媒体剧集的数据查找服务,相当于一个数据库,会根据视频的vid和清晰度给客户端返回剧集的分段信息,以及相应的调度服务地址。P2P客户端正是以该分段信息中的分段HashId为索引向P2P系统查找到缓存了该分段的Peer,然后打洞、获取数据,如果获取不到Peer,则请求调度地址,获得靠近的CDN边缘节点,然后使用CDN下载数据。对自媒体,也有对应的接口,只是域名和服务有所区别。

Dispatch 调度服务,CDN系统的调度服务会根据用户的地域、运营商、CDN负载等信息向用户返回最合适的CDN边缘节点。
CDN节点 实际存储文件的节点,主要分为边缘节点和源节点。搜狐视频的CDN回源策略是主推,结合拉。也就是说,在一个剧上线后,会主动从源站推送到各边缘节点,个别新上的边缘节点无法命中的情况下才会回源,减少回源的压力。

3.数据格式

      搜狐视频CDN内部存储的是按照一定参数转码后的MP4格式,主要参数有:

  • 时长(5min);
  • I帧间隔(10s);
  • 各个清晰度的分辨率;
  • 水印……

      每个剧会被切成最大5分钟的分段,这么切的目的是为了P2P的缓存,不希望客户端缓存一个大文件,当然也不能太小,以5分钟为单位是一个权衡。无论是CDN节点还是P2P矿机都存储了5分钟的mp4分段,Tracker存储了mp4分段的HashId(使用了SHA1)到存储该mp4分段的Peer信息,因此一个P2P的下载客户端去下载的时候,不管是从CDN还是从P2P都将获得一致的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150742.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 狂神说SpringCloud学习笔记[通俗易懂]

    狂神说SpringCloud学习笔记[通俗易懂]注:本文根据哔哩哔哩Up主狂神老师:狂神说Java所讲的springcloud课程所作的笔记,狂神老师springcloud哔哩哔哩视频连接:https://www.bilibili.com/video/BV1jJ411S7xr?p=18spring,课程代码可用在狂神老师的Java交流群中获取,或者到我的码云仓库https://gitee.com/cao_shi_peng/dashboard/projects获取,如果想进一步深入学习springcloud详细内容可自行参考Spring

  • AJAX请求的4个步骤

    AJAX请求的4个步骤一、创建XHR对象XMLHttpRequest(W3C标准)现在的浏览器基本都支持XHR对象,但IE5,6是例外。这时候就需要兼容性的写法二、监听XHR状态改变事件onreadystatechange()事件用于监听状态的变化当readyState等于4时,处于完成状态,XMLHttpRequest对象读取服务器响应结束当status等于200时,表示请求成功。这时候就可以进行对数据的处理。三、创建请求消息,连接服务器第一个参数为请求方式,第二个参数为所连接的服务器,第三个参数t

  • 一个Web前端自学者的自述「建议收藏」

    一个Web前端自学者的自述「建议收藏」想来想去还是写下这篇文章,先说明,我精通JAVA编程语言和web前端常见的技术,个人是做JAVA的多,但是更加喜欢前端。因为我从高一开始接触JAVA,家父是黑马的JAVA讲师,自己对编程很热爱,在大学

  • IIS真正能用的ISAPI-Rewrite防盗链规则写法

    IIS真正能用的ISAPI-Rewrite防盗链规则写法本规则支持白名单排除式防盗链,搜索引擎友好不屏蔽,被盗链后的错误提示转向,支持各种文件类型,经作者亲验真的能用,第一时间在原创发表,请继续往下阅读。近来小站遇到了盗链问题,至使网站的流量枉费流失,于是被迫准备为服务器安装防盗链机制以挽救本就不宽裕的带宽。通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法、服务器端的收费插件法和ISAPI-R…

  • source insight4.0注册码_sourceinsight激活成功教程版安装教程

    source insight4.0注册码_sourceinsight激活成功教程版安装教程下载地址:http://www.sourceinsight.com/down35.html注册码:    SI3US-205035-36448    SI3US-466908-65897    SI3US-368932-59383    SI3US-065458-30661    SI3US-759512-70207转自:http://blog.csdn.net/rac

  • pycharm暂停了,如何继续运行_pycharm运行完后不退出运行

    pycharm暂停了,如何继续运行_pycharm运行完后不退出运行pycharm的并行运行在pycharm中想要对一个程序同时多开几个运行窗口,并行的同时运行。但是会弹出下面提示:解决方法:步骤一:在pycharm顶部菜单栏单击Run(运行)->EditConfigurations(编辑配置)步骤二:在弹出的Run/Debugconfigurations窗口的右上角将“Allowparallelrun”打勾即可,如下图所示:不能自动…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号