当前位置: 首页 > 科技观察

融云首席架构师李淼:直播互动系统的设计与实践

时间:2023-03-19 00:07:54 科技观察

【.com原稿】在垂直社交化的今天,APP利用垂直社交关系链来增加用户粘性是获得成功的重要手段。选择直播互动是打通陌生人社交关系链的最佳方式。基于直播业务场景的实时性特点,目前直播互动主要通过聊天室产品实现。看似聊天室只是一个功能,但消息处理才是最大的难点。直播过程中出现闪退、卡顿等问题,将极大影响用户体验。当用户数量达到一定规模和高并发时,IM功能的稳定性将面临前所未有的考验。据此,在记者主办的WOT2017全球架构与运维技术峰会上,记者对融云首席架构师李淼进行了专访。课题主要围绕直播互动系统的设计与实践展开。直播互动系统的一些特点苗立·融云首席架构师兼联合创始人2014年融云成立时,仅提供聊天室等服务,国内直播平台尚未大量涌现。2015年,由于大量客户对直播互动的需求,融云预见到直播平台未来的美好前景,开始积极与客户沟通,挖掘需求,最终转型聊天房间变成了直播互动平台。经过16年的完整直播元年,互动直播系统正式进入成熟阶段。当被问及直播互动系统的特点时,李淼表示:首先,直播互动平台的用户数量其实是没有上限的,因为不可能限制一个主播可以加入观众的会员数量。其次,通过对消息进行分级控制,保证礼物、红包等消息传递的可靠性。三是瞬时消息吞吐量大。融云的一个聊天室,曾经每秒产生近千万条消息。第四,对扩展性和稳定性有很高的要求。消息平台的逻辑设计及其原因。消息是直播互动系统中最重要的元素。消息处理得好与否,将直接影响用户体验。融云消息平台的逻辑设计是怎样的?如上图,李淼用时序图回答了这个问题。客户端A是消息的发送者,服务端是融云整个后台平台,客户端B是消息的接收者。首先,客户端向服务端发送消息,服务端收到消息后首先进行消息校验。消息验证包括高危词和敏感词的过滤。之后先存储消息,然后返回响应给客户端A,通知消息发送成功。这个时候服务器会遍历成员分发通知。值得注意的是,消息实体还没有发送到客户端。接收客户端收到消息通知后,会从本地存储中获取当前直播间的最新消息版本号,同时向服务端发起同步请求。服务器获取到客户提交的版本号后,会以此版本号为起点求最新版本号,并将所有消息返回给客户端。客户端收到这条消息后,会显示消息并存储最新的版本号。整个通信过程和获取版本号的方法与普通的版本控制软件类似。发送通知后同步消息的流程如此复杂的主要原因如下:通知推送不需要服务质量来保证服务器上存储的消息顺序与到达客户端的顺序一致。当消息密集时,可以发送多条消息。消息合并可以控制投递消息的数量来存储和分类消息分类。消息平台在服务器端实现细节和最佳应用实践。介绍了分类、消息存储和消息分发队列四个方面,但是在实际的业务开发过程中,还有很多优化的地方。数据预处理。当服务器收到消息时,它首先将数据序列化并存储。序列化后的消息和要传递的客户端数据必须一致。通过这种预处理方式,CPU使用率在当前基础上降低了30%。.消息的分层存储。按照消息类型按照中高低顺序进行分级存储。Skiplist转为环形队列存储。每条消息都有一个唯一且递增的版本号,消息按版本号顺序存储。当这样的数据存储在内存中时,跳转表是一种非常适合的数据结构。但是跳表的时间复杂度和空间复杂度都比较大。同时,向跳表插入数据时使用的锁范围非常大,会对服务器造成一些额外的开销。后来跳秀演变成类似环形队列的数据结构,大大增加了服务器的性能开销。Map和queue构建复合数据结构,减少无意义的消费。服务器发送通知。对于通知来说,无论此时有多少条消息,每个用户只有一条通知,通过Map、queue等复合结构存储。数据指针存放在队列中,通知实体存放在map中,map使用的key是用户ID,可以减少无意义的消费。融云在线直播互动平台最新版整体架构直播互动平台2.1架构谈到直播平台的架构,李淼表示,如上图所示,目前的架构融云使用的分为连接层、业务层和存储层等。连接层和业务层构建成??一个整体的大集群,然后服务。连接层主要负责维护客户端和服务端的长连接,同时转换客户端的协议和内部服务的协议。业务层负责IM相关的业务处理。业务层采用微服务架构。在线服务有40多种,但直播互动平台包括以下三种服务:第一:上行控制服务,主要目的是处理从上行客户端收到的消息中的敏感词和高危词过滤.本服务的负载方式采用随机分布的负载方式。第二,直播服务负责维护直播间的会员关系,接收上行控制服务发给它的消息。上行控制服务会提前丢弃消息,在直播服务可以接收的范围内丢弃,并将消息发送给直播服务,直播服务广播给直播消息服务。第三:直播消息服务负责向用户分发通知,负载通过用户ID的一致性哈希来进行。每个服务节点都包含用户关系的一个子集。整个直播消息服务构建了一个整体会员,相当于直播消息服务上的一个节点。这一层除了分发通知外,还负责同步拉取客户端获取的消息。写在最后:针对容云在直播互动方面的核心竞争力问题,李淼老师回答:“我们容云提供的是直播互动平台,是基础的PaaS服务。用户的直播APP。融云最大的特点就是认定一件事,不断优化服务,提升能力,然后反馈给客户。我们经常与客户沟通,收集他们对直播互动的需求。需求拿到之后,产品人员将这些需求进行抽象提炼,转化为平台能力,提供给更多的客户。这样,我们就有了丰富的功能来满足客户的业务需求,同时也为新客户提供了更多的产品可能性。在业绩上,也得益于整个后端研发平台的人才梯队建设。融云目前有很多高端人才负责这项工作,我们有大量的各种业务。该机型的客户也遇到过各种场景的突发情况,通过这些问题的解决和能力的提升,性能完全可以满足客户的需求。”【原创稿件,合作网站转载请注明原作者和出处为.com】