高并发实时直播弹幕研发实践
直播间特点 聊天室限制人数的原因 应对万级以上的实时互动 跨服务器是为了解决单一服务器接入数量限制、发布消息吞吐限制等问题; 多进程并发则是为了充分利用多核CPU以及减小一个循环规模从而达到降低延迟的目的。 云巴实时系统的设计 云巴是基于MQTT协议实现的实时通信系统,采用Erlang/OTP的架构设计。简单地来说,云巴实时系统的设计包括多层结构、微服务两个要点。 多层结构 云巴系统设计中,多层结构意味着一个基本业务逻辑的完成需要经历多个模块(如图上所示)。 云巴多层结构设计有三个主要特点: 所有模块均可独立运行,互不干扰。 任一模块在运行的过程中,无需依赖其他模块。除此以外,还会对所有模块设立在线监控,从而实现生产状态下的实时告警。同时,模块独立运行还能够达到持续集成的效果; 细粒度扩容,包括但不限于对接入进行扩容等; 使用「隔离」。 顾名思义,系统可以为用户指定特定的路径,也可以在某些路径出现问题以后,强行从系统里摘除路径,达到「隔离」效果。 微服务化 虽然近期微服务已一个新兴事物的身份被广泛讨论,但其实,微服务可以算是一个 老 概念了。 比如Erlang/OTP就是一个成熟已久的典型微服务架构。其作为微服务架构的特点就在于业务逻辑非常简单的同时,并发量也非常高。 云巴采用的正是Erlang/OTP的架构设计,在微服务化的方面的体现则是将业务逻辑封装成一个RPC Service