直播业务作为现代互联网的重要组成部分,其核心功能在于实时音视频推拉流以及直播间消息流的收发。百度直播消息服务架构的设计与实践,正是围绕这两个核心功能展开的。本文将详细介绍百度直播消息服务架构的演变过程,以及面对的挑战和解决方案。
一、直播消息服务背景
直播间内的用户聊天互动,形式上虽然类似于常见的IM消息流,但实际上直播消息流所承载的内容远不止用户聊天。除了用户聊天外,直播间内常见的用户送礼物、进场提示、点赞、购买商品、主播推荐商品、申请连麦等互动行为的实时提醒,也是通过消息流下发的。此外,直播间关闭、直播流切换等特殊场景,也依赖消息流的实时下发。因此,消息流可以认为是直播间内主播与用户间实时互动和直播间实时控制的基础能力。
二、直播消息服务挑战
在构建直播消息系统时,百度面临了诸多挑战。其中,最为突出的两个问题是直播间内用户的维护和百万在线用户的消息下发。
直播间内用户的维护:
- 对于高热度的大型直播场景,如国庆、阅兵、春晚等,单直播间累计用户可达百万甚至千万量级,同时在线人数可达数百万人。
- 用户进出直播间非常频繁,高热度直播的单直播间每秒面临上万用户的进出变更。
- 需要支持在线百万、累积千万两个用户集合,每秒4万QPS的更新压力。
百万在线用户的消息下发:
- 实时性要求高:消息服务端不能简单做消峰处理,否则峰值消息的堆积会造成整体消息延时增大,影响用户观看直播时互动的实时性。
- 端性能和体验压力大:端展示各类用户聊天和系统消息,一般一屏不超过10-20条。如果每秒有超过20条的消息下发,端上展示的消息会持续刷屏,对端的处理和展示带来持续高负荷。
三、直播消息服务设计目标
综合考虑直播业务场景,百度为消息服务设定了以下目标:
- 实时性方面:端和端的消息要达到秒级。
- 性能方面:消息服务能支持同一直播间内百万以上用户同时在线下发。
- 用户体验方面:基于合理的端用户体验,单直播间内每秒消息数不超过N条(假设N<=20)。
四、直播消息服务架构实践
1. 直播间用户维护
为了高效维护直播间内的用户,百度采用了支持高读写性能的存储解决方案,如Redis,来应对每秒上万用户的进出变更和每秒4万QPS的更新压力。
2. 消息下发优化
面对百万在线用户的消息下发挑战,百度对消息服务架构进行了优化:
- 减少消息拉取:考虑到直播消息允许部分折损丢弃,百度优化了消息下发流程,只做单向消息下发,而不做拉取。这样减少了端对服务端的拉取请求压力。
- 优化存储和路由:通过优化直播间内用户列表的存储和扩展设备信息,减少了user->device的百万QPS查询压力。同时,优化了动态路由查询和长连接下发流程,提高了消息下发的效率和实时性。
- 端性能优化:在端上,百度通过优化消息展示逻辑和减少不必要的消息刷新,降低了端对消息处理的负荷。
3. 技术创新
在直播消息服务架构的实践中,百度还引入了多项技术创新:
- 千帆大模型开发与服务平台:利用该平台提供的强大计算和存储能力,百度能够更高效地处理和分析直播间的海量数据,为消息服务的实时性和性能提供了有力保障。
- 示例:在大型直播活动中,千帆大模型开发与服务平台能够实时分析用户行为数据,预测用户兴趣点,并据此推送个性化的消息提醒,提升用户参与度和互动性。
- 智能消息分发算法:通过智能算法对消息进行分发和排序,确保用户能够优先接收到重要和紧急的消息。
- 高可用性和容灾设计:为了确保消息服务的稳定性和可靠性,百度还设计了高可用性和容灾方案。通过多节点部署、负载均衡和故障转移等技术手段,确保在单点故障或网络异常情况下,消息服务仍然能够正常运行。
五、总结与展望
百度直播消息服务架构的实践与优化是一个持续不断的过程。通过不断的技术创新和优化策略的实施,百度已经成功构建了一个高效、稳定、可靠的直播消息服务系统。未来,百度将继续深化技术创新和业务拓展,为用户提供更加优质的直播体验和服务。
同时,百度也将继续开放和合作,与更多的合作伙伴共同推动直播行业的发展和进步。通过共享技术和资源,共同打造更加繁荣的直播生态体系。