如何建立网络链路中的闭环(针对直播、互动直播等流媒体)

本方案属于本人,侵权必究

 

最近在做流媒体,发现客户端和后端的交互中,双端在消息传递过程中,消息受网络链路条件的制约,使得重要的消息可能在传输中丢失,使得双端瘫痪。为了防止这种情况的发生,提出了下面的消息传递闭环方案。

理论基础

对于直播和互动直播这种网络模型,有种非常显著的一个充分/非充分和必要/非必要的逻辑关系:对于a->b->c->d这样的多个节点单链路的信息传递模型,即如果信息从a出发,最终目的是d。

有这样的推论:如果信息到达了d,那么必定有信息也到达了b,c。但是反过来,信息到达了b,不一定到达c、d。信息到达了c,不一定到达d。根据这样的推论,可以在信息重要的情形下,建立这样的代码逻辑。这个推论可以用来:

1、形成回路:比如主播踢人操作,中间经过后端踢人,但是是否踢成功没有反馈,主播端就不知道。但是如果在收到踢成功的消息后,再给主播端一个反馈信息,主播端就可以明确是否操作成功。比如主播端收到了“踢人成功”的消息,那么必定是踢人成功;如果没收到“踢人成功”的消息,那就是踢人成功或不成功都有可能。解释(这个链路的信息传递是a->b->c,其中a是主播踢人消息,b是后端踢人成功消息,c是后端给主播的踢人成功的反馈消息。如果主播得到c消息,那么必定有b踢人成功消息,就是a到b实现了,且b到c也实现了。而如果主播没有收到c消息,它可能的情形是,a到b实现了,但是b到c失败,或者a到b没实现,也就不存在b到c了。)

上述情形可抽象到更多的情形。比如a->b->c->...->z。

将这个模型称为回路机制。

优点:可主动获取操作是否成功的最终结果,是一种主动动作。

缺点:由于有反馈动作,需要发送消息,会占用网络带宽

适用情形:必要情况下,比如建立连接的过程中

和超时操作关系:相辅相成,一个主动保证,一个被动保证

方案实现

由此,可以用回路机制,超时机制,递归算法来确立一个保证消息链路闭合的方案:

递归结束条件:1、收到回路信息;2、满足超时条件;3、或者自定义递归条件满足

递归继续条件:自定义(比如未超时,未收到回路信息等)

针对网络链路需要注意的点

此外,虽然网络链路中消息传输失败的可能性低,但是仍然具有风险性,尤其是对于网络链路条件差的,消息发送越多,失败率越高。因此,对于不必要的确认动作,需要精简。(网络链路中多次消息确认可以看成是马尔可夫链,那么最终成功的概率为P=P(第n个消息成功到达|第n-1个消息成功到达|...|第1个消息成功到达),其中,只要有一个前置条件失败,就会导致链路失败,因此尽量减少不必要的中间过程,也可提高成功率)

最后,衡量不同的操作重要性,结合长连接和短连接的特点,选用不同的连接方式,也是一个可以提升整体网络性能的方向。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值