在腾讯大讲堂走进北京航空航天大学的一次演讲中,腾讯即通平台部的高级技术总监icezhuang分享了关于QQ即时通讯(IM)后台架构的演变及其在处理大规模在线用户挑战时的关键数据结构。这次演讲的主题聚焦于“接入服务器的核心数据结构”以及如何应对1.4亿在线用户带来的复杂需求。
1.0接入服务器的核心数据结构主要包括OnlineIndex(在线索引)和OnlineRecord(在线记录)。OnlineIndex用于存储用户的基本信息,如UIN(唯一标识符),标志位(Flag)以及用户的好友列表(FList)的位置,如L1、L2和L3。这些数据按照UIN升序排列,便于快速查找和定位用户。每个用户的数据还包含了在线状态,包括IP地址和端口,以及好友表的具体位置。
OnlineRecord则是用户详细信息的存储,包括UIN、层级(LEVEL)、在特定位置(POS)的存储位置。例如,UIN10003的信息显示其有多个层级的好友列表,以及对应的POS值。这个结构设计旨在高效地管理用户关系和实时通信状态。
演讲者回顾了从十万级在线发展到亿级在线的过程,指出团队面临了海量服务的巨大挑战,包括7亿活跃账户,1.4亿同时在线用户,过万台IM服务器,以及百亿级的关系链对数和每天千亿级的服务请求。为了保证99.99%的高可用性,团队通过升级到IM后台1.5版本来解决这些问题。该版本引入了长连接服务器,以支持视频、语音、文件传输等实时宽带业务,同时也对存储服务器进行了轻重分离,以提高核心服务器的稳定性并加快扩展速度。
第一代架构在面对百万级在线时就显得力不从心,主要问题在于接入服务器内存限制。每个在线用户约需2KB存储空间,这在百万级在线下可能导致性能瓶颈。为解决这一问题,架构优化成为了关键,通过引入新的服务器类型和数据管理策略,腾讯成功地提升了系统的可扩展性和服务质量。
演讲者强调,对海量服务的理解并非一蹴而就,而是团队在长期实践中不断学习和积累的经验。通过分享这些故事,听众可以深入了解如何在高度动态和变化的互联网环境中,构建和优化一个能够承载数亿用户并发的庞大系统。