听说你会架构设计?来,弄一个群聊系统

群聊系统是社交应用的核心功能之一 , 每个社交产品几乎都有着群聊系统的身影:包括但不限于 QQ、微信、抖音、小红书等 。上述介绍的技术细节可能只是群聊系统的冰山一角,像常见的抢红包、群内音视频通话这些核心功能也充斥着大量的技术难点 。1. 引言前些天所在部门出去团建,于是公司行政和 HR 拉了一个微信群,发布一些跟团和集合信息 。
当我正在查看途径路线和团建行程时,忽然一条带着喜意的消息扑面而来 , 消息上赫然带着八个大字:恭喜发财,大吉大利 。

听说你会架构设计?来,弄一个群聊系统

文章插图
抢红包?。≡?词枪?玖斓荚谌豪锓⒘烁龊彀??谑且?萌涸焙迩溃??掌淅秩谌?。
毕竟,团不团建无所谓,不上班就很快乐;抢多抢少无所谓,有钱进就很开心 。
打工人果然是最容易满足的生物!
我看着群里嬉戏打闹的聊天,心中陷入了沉思:微信这个集齐了陌生人聊天、文件分享和抢红包功能的群聊设计确实有点意思 , 如果在面试或者工作中让我们设计一个群聊系统,需要从哪些方面来考虑呢?
 
群聊系统设计面试官:微信作为 10 亿用户级别的全民 App,有用过吧?
我:(内心 OS,说没用过你也不会相信啊~)当然,亲爱的面试官,我经常使用微信来接收工作消息和文件,并且经常在上面处理工作内容 。
面试官:(内心 OS:这小伙子工作意识很强嘛,加分?。㎡K,微信的群聊功能是微信里面核心的一个能力,它可以将数百个好友或陌生人放进一个群空间,如果让你设计一个用户量为 10 亿用户的群聊系统,你会怎么设计呢?
 
2. 系统需求2.1 系统特点与功能需求我:首先群聊功能是社交应用的核心能力之一,它允许用户创建自己的社交圈子,与家人、朋友或共同兴趣爱好者进行友好地交流 。
以下是群聊系统常见的几个功能:
听说你会架构设计?来,弄一个群聊系统

文章插图
图片
  • 创建群聊:用户可以创建新的聊天群组,邀请其他好友用户加入或与陌生人面对面建群 。
  • 群组管理:群主和管理员能够管理群成员,设置规则和权限 。
  • 消息发送和接收:允许群成员发送文本、图片、音频、视频等多种类型的消息,并推送给所有群成员 。
  • 实时通信:消息应该能够快速传递 , 确保实时互动 。
  • 抢红包:用户在群聊中发送任意个数和金额的红包 , 群成员可以抢到随机金额的红包 。
 
2.2 非功能需求除了功能需要,当我们面对 10 亿微信用户每天都可能使用建群功能的情景时,还需要处理大规模的用户并发 。
这就引出了系统的非功能需求,包括:
  • 高并发:系统需要支持大量用户同时创建和使用群组,以确保无延迟的用户体验 。
  • 高性能:快速消息传递、即时响应,是数字社交的关键 。
  • 海量存储:系统必须可扩展 , 以容纳用户生成的海量消息文本、图片及音视频数据 。
面试官:嗯,不错,那你可以简要概述一下这几个常用的功能吗?
【听说你会架构设计?来,弄一个群聊系统】 
3. 核心组件我:好的 , 我们首先做系统的概要设计,这里涉及到群聊系统的核心组件和基本业务的概要说明 。
3.1 核心组件群聊系统中,会涉及到如下核心组件和协议 。
听说你会架构设计?来,弄一个群聊系统

文章插图
图片