8月27日至30日,一年一度的《英雄联盟》周年盛典将与广大玩家共同回忆过往,展望未来。由于多方面因素,本次盛会不支持线下观赛,但如此盛大的电竞盛会怎么能少了各位热情的召唤师?为此,英雄联盟联合云开发为各位玩家打造了一套百万玩家同时在线的聊天系统——内场观赛区,可供百万玩家同时在线交流,全面升级线上观赛与活动体验,带给各位召唤师们既是观众、又似故事参与者般奇妙的感受!内场观赛区互动界面
玩家只需通过宇宙竞技场进入内场观赛区(PC端/移动端均可访问),即可与进入云开发与英雄联盟联合打造的专属观赛区,在观赛区内,支持玩家邀请小伙伴或随机偶遇其他玩家共同欣赏比赛,并能进行实时交流,一起为你喜欢的战队打call!
线上观赛也能“开黑”!
这么一套百万在线的聊天系统,以往需要一定人力、至少一个月以上的时间来打造,而借助云开发,只需1位研发工程师仅用2-3周就完成了开发到上线的全流程!
百万级聊天系统带来的三大挑战
首先,需要介绍本次活动的主要场景需求:
1、百万并发的在线聊天室
每个虚拟聊天室房间可容纳5人观看比赛,并支持实时互动,包括聊天、发送表情、动作等交互方式,此外聊天室还设有战队应援等模块。
2、房间匹配
玩家每次进入网页时,系统都会查询当前房间的匹配情况。
3、百万并发的实时抽奖活动
观看直播的各位玩家可在比赛的某个时间节点,点击页面中的“宝箱”参与实时抽奖。上述三个场景面临的压力各不相同:
首先,聊天室的场景中,因为涉及聊天信息的存储和分发,除了对消息推送的实时性考验外,最大的考验是对数据存储层的压力。对于百万量级的直播场景,比赛的关键时刻往往也是玩家最活跃、进行“刷屏”互动的时候,理论顶峰 100W 的QPS,对后端的存储压力无疑是巨大的。
接着,房间匹配场景。正如上文所介绍,进入页面后第一个逻辑就是查询当前用户的历史房间id,这个貌似没有很大压力,但是考虑到极端情况下,如果直播出现卡顿,大量用户同时刷新页面,将对系统稳定性带来巨大的考验。
最后,实时抽奖环节如何保障百万级用户在几乎同一时间完成“点击-开奖”的抽奖交互,同样是一项不小的挑战。
面对挑战,云开发如何破局?
那么应对这聊天系统中的三大挑战,云开发如何一一攻克?
首先,应对聊天室场景的数据压力:一个字——「拆」!即将聊天信息的数据流,打散至50个环境中,并将系统分为主环境和聊天室环境,主环境用于承载房间匹配、用户房间查询、房间数据库环境映射关系查询等通用逻辑后台;而聊天室环境则负责虚拟房间内玩家的实时交互,包括文字消息、表情、动作等等。