1.万人直播架构与CDN网络

慕课网课程地址:https://www.imooc.com/learn/959

1-1 万人直播架构与CDN网络

实时互动直播延迟通常在400毫秒以内

泛娱乐化直播主要由4部分组成,第一部分为主播端,发起信令,到第二部分信令服务器,信令服务器处理这些信令,做相应的逻辑处理, 比如常见的创建房间,聊天,发送礼物,都是以信令的形式进行处理的。第三部分为流媒体云部分,也就是通常我们说的CDN网络, 它的作用是对音视频流进行转发,CDN网络是我们泛娱乐化直播架构中最重要的一部分, 第四部分就是观看端,也就是收看主播端端。 

泛娱乐化直播的流程如下,首先主播端发送一个信令到信令服务器,说创建一个房间,信令服务器收到信令之后, 在服务端将房间创建好,之后返回给共享端一个流媒体云端地址,共享端采集自己的音视频数据,形成rtmp流,推送到CDN网络。如果此时一个用户想要观看主播端节目,此时客户端(手机端)也会发一个信令到信令服务器, 信令服务器将这个用户加入到该美女主播的房间,给他返回他想看的的那个主播的流媒体云的地址,第四步观众就可以到CDN网络去拉取这个流,从而看到他想看的节目。对于其他用户,也是这个步骤。 

 

        实时互动直播结构,右边的CDN网络的部分, 它其实我们泛娱乐化直播的架构。首先看我们的实时网络,为什么在我们的实时互动部分需要有自有网络呢?主要还是与传输协议有关,我我们在网络传输时主要用两种协议,一种是UDP协议,一种是TCP协议,TCP协议是可靠的流式传输协议,即A想B发送数据,B肯定是收到的,而且是有序的,机制就是 发送,确认,超时,重发。根据TCP协议,如果网络不好的话,那么发送之后的等待时间将会非常长,因此TCP是不可能达到实时效果的,所以我们必须使用UDP网络,UDP网络的优点是有包就发,不管收到收不到,因为音视频业务对时效性要求比较高,所以更适合使用UDP协议。因为实时互动协议是基于UDP协议,所以必须要自己建设网络,而不是像TCP的CND网络一样,已经很成熟了。第二点主要又业务原因造成的,就是在我们需求的服务端有多个节点, 为什么要有多个节点呢?比如像我们的音视频会议,一般都是ToB的产品,要求服务可靠,健壮,可以提供24小时服务。如何保证可以提供24小时的服务呢?就是在我们的服务端给它设成多个节点, 一旦某个节点出现问题,可以将这个节点的业务切换到另一个节点继续为 用户提供服务。对用户来说是无感知到,服务是一直通畅的,这样也可以保证每个节点都可以负载均衡,降低我们的风险。有了多节点。就要有我们的控制中心,控制中心与节点之间是通过心跳来实时保持通信的。每个节点都要定期的想控制中心报告自己的健康指数,比如自己的CPU,内存,IO,网络的占用情况。控制中心会根据这些数据进行相应的决策。第4点就是我们的内总线,内总线的好处是我的数据可以保证安全,可以有很高的吞吐量, 可以更好的控制,如果我们没有这个内总线,而是使用普通的web网络,这个可靠性是无法达到我们的要求的。这4点构成了整个实时互动的框架。

       随着业务的发展,光有实时互动是不够的, 有些课程和节目既需要实时互动又需要大量用户观看,这时候就是我们实时互动架构与泛娱乐化架构的融合。他们是如何融合的呢?最关键的一点就是我们的媒体服务器,媒体服务器主要起到一个转化的作用,我们在实时互动这个网络中使用的是UDP协议,它里面是RTP的包,一个个的包通过媒体传输到我们的内部总线,又从我们的内部总线传到媒体服务器。而我们的CDN网络使用的是RTMP协议,那么RTP协议如何转成RTMP协议进入到我们的CDN网络呢?就是通过媒体转化服务器。它主要是做RTP到RTMP转化用的。这样就将我们的实时互动直播与泛娱乐化直播进行了一次融合。第六步视频网络推送到CNDN,那么在我们CDN的用户就可以获取CDN的流,直接观看在实时互动网络中创建的这些节目。

1-2 CDN网络讲解

CDN网络是为了解决用户访问网络资源慢而出现的一门技术,  用户访问网络资源慢,总结起来其实就两个原因,第一个原因就是链路过长,我们可以举一个例子,假如一个用户在东北,而他想访问的服务在海南,这么长的线路,其中任何一个节点出现问题,就会造成用户整体的感觉非常差。第二点就是人文因素,我们知道,网络运营商为了留住自己的用户,就会与其他运营商进行切割和限制。 基于这两个原因,CDN网络应运而生。

 

一个用户首先请求边缘节点,边缘节点没有,就请求主干节点,如果主干节点也没有这个数据,那么他就要回到源站节点去获取这个数据。这样就构成了我们的一个基本的CDN网络。

假设我们现在有两个运营商,一个是中国联通,一个是中国电信,在每个运营商内部实际上都要建自己的网络,而且他的源节点很多,也会有主干节点和边缘节点, 用户首先是访问边缘节点,看有没有数据可以拿到,如果没有的话,才会向主干节点去请求,一层一层如果都没有的话,就会到源节点。为了解决运营商之间的互相限制,我们通常在两个网络之间会架设一个主干节点,通过光纤对接将他们链接在一起,这样的话,资源就打通了,如果我有一个服务在联通,而我有一个用户是在电信, 这样他去访问联通资源的时候就会非常快。首先一个用户,如果想访问一个资源,会通过DNS找到他就近的那个边缘节点, 请求数据,如果这个时候,没有数据,它就会到主干节点,主干节点依然没有,那它就会看这个资源是电信上的服务还是联通上的服务,如果是联通上的服务,那么它就会到联通上的主干节点,如果依然没有,那么它就会访问联通上的源节点,如果找到这个数据了,就会通过原来的路径返回到用户这里。如果你是这个资源的第一个用户,那么很有可能要走完整个路径,这个时间可能会非常长,如果很多用户都要访问这个资源,那么第一次拿数据的时候,已经缓存到了边缘节点上。拿第二个用户拿数据的时候,就可以直接从边缘节点拉到自己的本机上。 这样就达到了一个加速的效果。当然CDN网络分为传统的CDN网络和现有的音视频直播流的CDN网络。 对于这两套CDN还是有很明显的区别的,传统的CND会追求热点,而对于直播的CDN网络,一般是通过源先push到我们的主干节点,让这些数据都存在,因为他的实时性比较高,不能有太大延迟,当你从边缘节点访问的时候,如果边缘节点没有,直接从主干节点拉取,也就是它与推拉是相结合的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值