直播互动系统的设计与实践

上传人:工**** 文档编号:456649724 上传时间:2024-01-17 格式:DOCX 页数:4 大小:74.23KB
返回 下载 相关 举报
直播互动系统的设计与实践_第1页
第1页 / 共4页
直播互动系统的设计与实践_第2页
第2页 / 共4页
直播互动系统的设计与实践_第3页
第3页 / 共4页
直播互动系统的设计与实践_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《直播互动系统的设计与实践》由会员分享,可在线阅读,更多相关《直播互动系统的设计与实践(4页珍藏版)》请在金锄头文库上搜索。

1、直播互动系统的设计与实践在直播过程中,岀现闪退、卡顿等问题,会非常影响用户体验。当用户量达到一定规模,高并发之下,IM功能的稳定性将会面对前所 未有的考验。基于此,记者在 51CTO 主办的 WOT2017 全球架构与运维技术峰会上,对融云首席架构师李淼进行了专访,话题主要围绕 直播互动系统的设计与实践展开。【51CT原创稿件】社交垂直化的今天,APP利用垂直社交关系链来提升用户黏性是通往成功的重要手段,选择直 播互动是打通陌生人社交关系链的最佳方式。基于直播业务场景的实时特性,直播互动目前主要通过聊天室产品实现。 看似聊天室只是一个功能,但消息处理是最大的难点。在直播过程中,岀现闪退、卡顿等

2、问题,会非常影响用户体验。 当用户量达到一定规模,高并发之下, IM 功能的稳定性将会面对前所未有的考验。基于此,记者在 51CT0 主办的 W0T2017 全球架构与运维技术峰会上,对融云首席架构师李淼进行了专访,话题主要围绕直播互动系统的设计与实践 展开。直播互动系统的一些特性李淼融云首席架构师兼联合创始人融云于 14 年成立之时,只提供聊天室这样的服务,国内直播平台还未大批兴起。15 年,源于大量客户对直播互动的需求,融云预见直播平台未来会有很好的前景,开始与客户积极交流来挖掘需求,最终将聊天室转变为直播互动平台。经 历了16 年一个完整的直播元年,直播互动系统也正式步入了成熟期。当问及

3、直播互动系统的特性,李淼表示: 其一,直播互动平台的用户量实际上是没有上限的,因为不可能去限制一个主播加入观众的成员数量。 其二,通过把消息进行分级控制的方式来保证礼物、红包等消息传输的可靠性。其三,瞬时消息吞吐量大,融云某个聊天室曾经一秒钟产生过近千万的消息。 其四,就是针对伸缩及稳定性方面的高要求。消息平台的逻辑设计及这样做的原因消息是直播互动系统最重要的元素,消息的处理做的好不好会直接影响用户的体验。融云的消息平台逻辑设计是怎样的 呢?A客户端B客户寧r 返明人展珊輝 工荐6誨新腹本号如上图,李淼用一张时序图针对这个问题进行了解答。A客户端是发消息方、服务端是融云整个后端平台,B客户端是

4、 接收消息方。首先,客户端向服务端发送消息,服务端接收消息先进行消息验证,消息验证里面包含了高危词、敏感词 的过滤,反垃圾系统对消息进行反垃圾的过滤,以及权限验证,当消息通过之后,对消息优先进行存储,之后会给A客 户端返回应答,告知消息已经发送成功。这时服务端会遍历成员分发通知。值得注意的是,现在还没有向客户端发送消 息实体,当接收客户端接收消息通知时,会从自己本地存储里面拿到当前直播间里面最新的消息版本号,同时向服务器 发起同步请求,服务器获取客户提交的版本号之后,会以这个版本号为起点到最新版本号把所有消息全部拿回来返回给 客户端,客户端收到这个消息进行消息展示以及存储这个最新版本号。整个通

5、信流程,版本号获取方式,跟常用版本控 制软件比较类似。之所以把流程变得这么复杂,在发送完通知之后再同步消息,主要原因如下: 通知的推送无需服务质量保证 服务器端存储的消息顺序与到达的客户端顺序一致 当消息密集时可以将多条消息进行合并 可以控制下发的消息条数 以存储分级实现消息分级消息平台在服务端实现细节及最佳应用实践当问及直播消息系统于服务端的实现细节,李淼主要从数据预处理、消息分级、消息存储和消息分发队列四方面进行了 介绍,但在实际服务开发过程中,优化还有很多。数据预处理。当服务端接收消息之后优先对数据进行序列化以及存储,序列化消息和要下发的客户端数据要保持一致, 通过这种预处理的方式, C

6、PU 的使用率在当前基础上降低了 30%。消息分级存储。根据消息类型按照中、高、低序列进行分级存储。Skiplist 转化为环形队列存储。每条消息有唯一且递增版本号,消息按照版本号顺序存储。这样的数据在内存存储情况下, 跳表是一种非常合适的数据结构。但是,跳表时间复杂度和空间复杂度比较大,同时往跳表中插入数据时使用的锁范围 非常大,会对服务器产生一些额外的开销。之后,由跳表演进成一种类似环形队列的数据结构,对服务器性能开销提升 很多。Map 与队列构建复合数据结构,降低无意义消费。服务端下发通知,对于通知来讲在这一时刻无论有多少条消息,每个 用户只有一条通知,通过Map与队列构建这样的复合结构

7、进行存储。队列里面存储是数据的指针,Map存储用于下发 的通知实体, Map 使用的 key 为用户标识,这样可以降低无意义的消费。融云最新版线上直播互动平台的整体架构直播互动平台的 2.1架构谈到直播平台的架构,李淼表示,如上图,融云目前正在使用的架构分为连接层、业务层和存储层等。连接层和业务层 构建成整个大的集群,然后进行服务。连接层主要是负责客户端与服务器保持长连接,同时将客户端的协议与内部服务 的协议进行相互转化。业务层负责IM相关业务处理,业务层采用的是微服务架构,线上服务有40多个类型,但对于直播互动平台包含如下三项服务:第一:上行控制服务,主要目的是用于处理接收的上行客户端的消息

8、,进行敏感词和高危词的过滤。这个服务的负载方 式采用的是随机分配的负载方式。第二,直播服务,负责维护直播间成员关系和负责接收上行控制服务给它的消息,上行控制服务会先期进行消息抛弃, 抛弃到直播服务可以接收的范围之内,将消息下发到直播服务,直播服务再广播到直播消息服务。第三:直播消息服务,负责给用户进行分发通知,是以用户 ID 进行一致的哈希方式进行负载。每个服务节点包含部分 用户关系。整个直播消息服务构建了一个整体成员关系,他等同于直播消息服务上的一个节点。这层除分发通知外,还 负责客户端同步拉取获取的消息。写在最后:针对关于融云在直播互动核心竞争力的问题,李淼老师,这样回答:“ 我们融云提供

9、的是直播互动平台,是一个基础 PAAS 服务,本身并不会去做直接面对用户的直播APP。融云最大的特点就是认准一件事死磕,不停优化服务提升能力,之后 再反哺给客户。我们经常与客户进行沟通,收集他们对直播互动这块的需求。需求拿来之后,产品人员会对这些需求进 行抽象提炼,将他们变成平台能力,再提供给更多的客户。通过这种方式,我们拥有了丰富功能以满足客户的业务需要, 同样对新客户也给他们提供了更多的产品可能性。性能上也得益于现在整个后端研发平台的人才梯队的建设,融云目前 有很多高端人才负责这一块的工作,同时我们拥有大量各种业务模式的客户,也遇到过各类场景下产生的突发事件,通 过这些问题解决和能力提升,所以在性能完全可以满足客户的需要”。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 电气技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号