一种直播训练程序的技术方案设计

申明:文中涉及到的图片以及文字内容均为原创,未经授权,不得使用。以下文章包含3100字,阅读需要12分钟,请合理安排时间。

公众号原文链接:
一种直播训练程序的技术方案设计

随着短视频和直播带货的爆火,很多人走上了自媒体创业的道路,也有更多的人正在场外观望,想入场,又不知道要怎么做,想直播,却又不知道说什么,一直在等待一个机会,但是没有准备好,又谈何机会?试想有没有一个系统,能够1:1模拟一个直播间的人气,互动,模拟主播的全部发言,你想要入场,但是没有基础,这时候,你只需要打开这个程序,跟着提示做,你也可以直播?

有,前段时间设计的知音直播训练营,目前已完成了大部分技术设计与核心功能的开发,本篇文章主要来说说,如果我想做一个类似的程序,我应该怎么设计我的整个系统。

干嘛用的?
1:1模拟直播间人气,行为,指导小白直播,老司机则可以体验更高人气的直播间效果。

从哪里开始?
下图大致说明了从想法到实现的5大块问题,在开发之前需要考虑清楚的:
在这里插入图片描述
将以上几个问题针对训练程序具体化,就可以得到如下8个需要考虑的问题:

  1. 我们应该明确该程序能做到什么程度:核心功能包含哪些东西,除了核心功能之外,还应包含哪些没办法省略的小功能。
  2. 针对核心功能,我是以什么样的方式去呈现给用户。
  3. 我有什么样的技术,在实现上会遇到什么样的技术难点。
  4. 我需要怎么还原直播间的人气和行为(包括主播的行为与观众的行为)。
  5. 还原了直播间的人气和行为之后,这些内容我需要怎么存储,以及这些内容需要以怎样的方式在我的程序中流转。
  6. 如果用户多了,同时训练的人较多的情况下,我的程序需要怎么应对。
  7. 针对3-5点,我需要用什么样的技术框架来开发,是比较节省开发成本的。
  8. 开发好了程序并上线后,我作为开发人员,需要以什么样的方式来维护这个程序。

以上几点中,1和2偏向于产品设计,3根据自己的技术能力确定,8偏向于运维,接下来重点看看4-7点。

怎么还原直播间?

训练程序,就是由程序带着我直播,程序让我干嘛,我就干嘛,这样就达到了训练的目的。由此,第一层技术拆解之后,训练程序其实就是模拟人的行为,程序需要模拟观众的行为,比如发弹幕,点赞,打赏,同时也需要模拟主播的行为,比如商品讲解,拉关注,与粉丝互动。

但是显然一个程序不能像真人一样,给你做出动作,像观众一样打字,刷礼物,但是别忘了,在互联网中,一切用户行为,都可以等量变换为数据,由此,第二层技术拆解了,模拟人的行为,其实就是模拟人产生的数据,显然,程序很精通处理数据。

截至目前,我们已经知道了,还原直播间,其实就是还原直播间产生的数据,那么问题来了,数据从哪里来?试想一个场景,你蹲在一个在线人数1w人的大V带货直播间,用你的小本本把你看到的听到的直播间所有的信息都记录下来,直播了三小时,你记了厚厚一本小抄,那么这本小抄上面的信息,是不是可以用来还原刚才这个带货直播间了?而我们的代码,很适合来做这个小抄员的工作。

事情还没完,你的小抄上面有很多没价值的,或者太有价值的信息,这些都必须要去掉,所以你又整理了一遍,把200页的小抄变成了50页,而这50页的小抄,就是你后续用来还原一个直播间的原始信息。再通过分类排序,这些数据终于按照时间先后的顺序,在时间轴上排好了队,这个具有时间先后的时序数据,基本就还原了之前直播间产生的一切行为,解决!

用一个图表示以上的步骤:
在这里插入图片描述
对于最终形成的时序数据,简单的可以理解为如下的图示,将时间轴拉长,就有了直播间所有行为的数据:
在这里插入图片描述
有了时序数据,就好比我们的程序有了燃油一样,下一步就需要考虑这些燃油怎么烧了,包括烧多少,在什么时间点烧,我们在程序启动之后,需要在精确的时间点,将这个数据展示给训练者,含义为在这个时间点,观众或者主播正在发生该行为。试想一下,你的训练者在讲解一个商品,刚说完了前两句话,后面不知道要讲啥了,是不是很尴尬,所以时间点一定要精确。这里我们引入延时队列的概念,数据由数据库加载进程序的同时,我们需要计算每一条数据与开播时间点之间的时间差,这样每个时序数据都有了一个延迟出现的时间,而这个时间确保了该行为在特定的时间发生。这样似乎就能解决问题,而在实际开发过程中,这个延迟时间的计算并没有这么简单,还会涉及到加载时间漂移,初始时间漂移等诸多问题,原则上讲,该步骤的关键就是在复杂场景下,尽可能精确地计算这个延迟时间,确保在不同事件下的两次训练,数据出现的时间间隔一致。
在这里插入图片描述
数据怎么流转?

到目前,有了延迟时间,我们的时序数据就能按照计划,依次在特定的时间点展示给用户了,第3点如何还原直播间的问题也基本解决,接下来就可以考虑数据在整个程序中怎么流转的问题了:

首先我们考虑的是这些数据需要怎么加载进程序中,就好比你的燃油,现在存在油箱里,在你发动汽车的那一刻,油怎么从油箱进入发动机,让汽车跑起来。我们的时序数据是在数据库中,在程序启动的那一刻,需要把这些时序数据全部加载到运行的延时队列中,该部分就看咱们开发人员的设计功底了,是不是一次加载所有的数据到延时队列?当然可以,只要你的机器足够强大,但是往往我们的服务器资源不够,这就需要我们对程序进行优化,能不能每次加载一批时序数据到延时队列?可以,节省了内存开销,以及首次加载时间,但同时也引入了一个新的问题,延迟时间的计算变得更加复杂了,除了之前需要考虑的因素外,还加上加载时间的漂移,但这都可以解决。至此,我们的训练程序启动,通过一批一批时序数据的加载,进入延时队列之后,在一个一个的吐出来呈现给用户,看上去,我们的程序核心难点已经解决了。程序启动之后整个数据流转的过程如下图所示:
在这里插入图片描述
并发过大怎么办?

最后一个需要考虑的问题就是,如果数据量大了,同时训练的人多了,这个程序应该如何才能支撑起业务需求,这里直接给出解决方案:

  1. 在成本有限的前提下,我们对于训练数据进行分表操作,每个直播间的训练数据独立存储,可以缓解数据加载过程中,条件查询的复杂度,保证了加载数据过程不会太久。
  2. 对于前后端交互过程,我们不选用http协议,原因是在大量访问服务端接口调取延时数据的过程中,可能会导致大量的网络堵塞,这里我们采用socket协议,采用长连接的方式,由服务端接收到延时队列发送的延时数据后,主动将数据推送到客户端展示。
  3. 在多用户同时训练的情况下,我们在系统上线时采用分布式部署的方式,多节点支撑系统运行,比如100人同时开始训练,1-50人由A服务器提供服务,51-100人由B服务器提供服务,达到系统容量的横向可扩展,业务量少的情况下减少服务器,业务量增加的时候动态增加服务器。
  4. 还需要考虑的一个问题在于客户端,主要看呈现方式,大量的训练数据涌入客户端的时候,需要考虑清除历史训练数据,否则极易引起客户端内存占用过多导致程序卡顿或崩溃。

在这里插入图片描述
我要用什么技术实现?

接下来就可以考虑具体的技术选型了,比如我前后台交互需要用哪些技术组件,后端需要使用什么样的技术来加载数据,这个就看个人的喜好了,技术选型没有统一的标准,选能够实现功能的,并且自己熟悉的技术框架来开发,就可以了。

最后提几个需要完善的小功能,可以考虑丰富一下程序的内容:

  1. 用户训练的日志记录
  2. 用户可以自主选择自己想要类型的直播内容训练
  3. 程序在启动之后,可以适当加一些与用户的互动
  4. 对于用户训练结果,可以进行打分操作

这样一个完整的直播训练程序技术方案设计就有了,根据这份设计思路,再结合自己的技术能力,就可以实现一个完整的程序功能了。

更多详情欢迎关注咨询,也可阅读公众号原文联系本人咨询:
一种直播训练程序的技术方案设计

往期回顾
​​​
数据平台初试(技术篇)——抖音数据采集(初级版)

数据平台初试(技术篇)——抖音数据采集(高级版)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值