[ 玩转 LeanCloud ] 开发者经验分享:
懂球帝是一款足球资讯与社交应用,用户不仅可以看到全球的足球赛事信息,还能在上面观看热点比赛直播,参与直播聊天室和社交圈子,从商城中购买装备和游戏。目前懂球帝已经占据了国内足球类应用市场份额的 80%,其总用户量已经突破五千多万,日活峰值可以达到五百万之多。
直播聊天室是我们比较有特色的服务,它把志同道合的球友们聚到了一块,让他们边看直播边聊天,一起加油助威,有些甚至成了生活中的好友。
从技术上讲,由于我们的用户体量非常大,我们需要直播聊天室能够支撑海量用户同时在线,并且在一个聊天室中,一个用户发消息要能广播给聊天室内所有的用户。这就有一个问题——当单个聊天室成员特别多的时候,用户每发一条消息都会被广播出去产生大量的消息下发;另外,足球比赛的特点是消息量变化幅度非常大,没有比赛或者关注人数特别少的比赛,它的消息量就非常少,而关注量特别高的比赛消息量又会非常多,特别是在关注量特别高又在关键时刻进球,比如点球进了、最后一分钟绝杀等,消息量是呈几十甚至几百倍暴增的,这些都对 IM 服务的处理效率和稳定性带来了巨大的挑战。
庆幸的是,LeanCloud 针对我们的聊天室需求单独为我们的 IM 连接做了优化——减少单条连接占用内存数,增加单条连接能承载的消息量,从而能让单台服务器承载更多的用户连接,从容地支撑懂球帝不断增长的用户量。
针对大量消息的下发,LeanCloud 的 IM 服务有动态聚合消息的机制,也就是说这个机制能根据单条连接中消息量的多少来选择是否要将消息做聚合批量下发——消息量大就做消息聚合,保证大吞吐量情况下服务的性能;消息量少就不做消息聚合,而是快速将待发消息发到接收设备,降低消息延迟时间。对于突然爆发式的消息增长,LeanCloud 这边设置了多道缓存和队列来平滑消息峰值。并且 LeanCloud 的 IM 服务提供了带宽自动调整机制,从而在平时或者关注人比较少的比赛时调低带宽,以节省我们的费用开支,而在关注人数多的比赛时又能自动调高带宽以保证服务流畅平稳。
我们使用的是 LeanCloud 企业版,所以在服务质量方面,LeanCloud 通过冗余部署能让服务可用性达到 99.9%,即使部分服务器出现故障也能支持懂球帝服务正常运行。并且 LeanCloud 的 IM 服务所有服务器均能做到平滑扩容,为持续顺畅支持懂球帝的高速增长打下来基础。特别是能够在有大型比赛时,提前快速扩容来支持涌入的用户,又能在赛后快速缩容以减少费用,这让用户使用起来会省很多心。
除了性能和服务质量,我们对服务使用的便利程度也有要求。因为长期跟 LeanCloud 合作,我们双方都做过多次技术交流。通过这些交流,我们与 LeanCloud 团队的日常沟通也就变得非常通畅; LeanCloud 也积极响应我们的需要,不断地提供和改进定制化解决方案,这就让我们可以更放心地使用 LeanCloud 服务了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.