P2p直播服务器顾名思义使用P2P技术。目前,P2P技术可实现共享文件、流媒体播放、点对点通信软件等等,比如下载站常见的迅雷和视频站常见的爱奇艺。P2P技术属于分布式系统的应用,通常表现为客户端直接交换和共享数据。在P2P过程中,所有客户端的活动会形成一个逻辑虚拟网络,我们成他们为P2P模型的网络拓扑。P2P的网络拓扑有三种:基于DHT的完全网状、树形和环形。
P2P直播技术不同于常见的流媒体直播协议。前者属于C/S类型,即所有客户端通过指定的协议从服务器获取直播数据。当客户端数量形成一定规模,服务器会接连承受巨大的I/O和带宽带来的压力。如果服务器不能及时处理客户的请求,直播段的卡顿现象会直接影响到客户观看直播的体验。
直播P2P技术,简单来说就是客户端使用一定的协议来交换和共享直播数据,通过减少对服务器的数据请求来降低对服务器I/O带宽的压力,从而降低服务器的带宽成本和客户端的卡播率。
考虑到通用性和效率的问题,很少从底层设计新的流媒体直播P2P协议。基于通用协议在客户端实现P2P网络是一种常见的做法。对于如HLS,MPEG-DASH这类型基于http的流媒体协议,只需要重写客户端数据下载逻辑即可;对RTMP、RtsP这类型非HTTP流媒体协议实施P2P,需要一个分片服务器,负责不断将数据流切割成数据片段(类似HLS的TS文件),客户端在P2P网络的基础上下载、交换、共享数据片段。
在设计直播P2P协议时,我们通常会关注两个要素:客户端延迟和P2P共享率。主要这两个要素可以实现端对端,点对点的流畅播放。