WhatsApp网页版登录WhatsApp网页版登录

WhatsApp中文版

WhatsApp_WhatsApp架构设计

WhatsApp 是全球用户最多的 IM 系统之一,以很小的资源消耗支撑了超大规模的消息通信,通过思考 WhatsApp 的架构选择,可以帮助我们了解怎样打造一个简单高效的消息系统。原文:WhatsApp System Architecture

今天我们要设计一个类似 WhatsApp 的即时通讯服务。

WhatsApp架构设计_WhatsApp_类似WhatsApp的即时通讯服务设计

Alexander Shatov@Unsplash

WhatsApp 是全世界大部分人几乎每天都在使用的应用程序,帮助我们以友好便捷的方式联系世界各地的朋友。常用的聊天系统一般分为两种类型,一种永久存储所有的信息,典型的是 Facebook Messenger,另一种只在消息无法直接送达的时候存储信息,一旦消息发送成功并收到确认,就会从系统中删除,典型的是 WhatsApp。

功能性需求

支持一对一的聊天

支持离线时发送消息

支持向包括离线用户在内的其他用户发送消息

支持聊天群组

支持最多 256 名参与者的 WhatsApp 群组

支持视频聊天

支持群组视频聊天

支持语音消息

支持图片、视频、文件分享

支持加密消息

视频最大 16MB,时长 90 秒到 3 分钟

支持已读回执

用户最后上线时间(基于不同的场景)

已发送、已送达、已阅读状态显式

分享文件大小不超过 100MB

支持播放 youtube、音频和视频

支持视频格式:MP4、3GP、MKV、AVI、MOV

一旦文件、视频、音频和图像超过大小限制WhatsApp网页版,将显示状态通知

支持分享文件、视频、音频和图像到其他应用程序

支持在群组聊天中回复特定的消息

允许转发任何消息

允许拷贝消息

允许保存消息

允许将消息存档

允许我们私下回复消息

允许只发送和查看视频、图像一次,阅后即焚

允许删除消息

对于特定消息WhatsApp网页版,支持向 WhatsApp 团队报告

支持通过 WhatsApp 拍照

支持当录音功能设置为全开后进行录音

支持访问手机联系人列表

支持共享位置(共享实时位置或共享当前位置)

支持通过 Facebook Messenger、邮件、微信、Telegram 等分享视频和文件

允许编辑、上传、删除用户配置文件

允许添加个人简介

允许绑定其他设备

允许更新状态

对于不同的场景,允许定制设置

非功能性需求

超低时延

永远可用

没有延时

高可扩展性

一致性(在其他设备上显示的内容,将与其他设备同步)

系统架构组件

WhatsApp架构设计_WhatsApp_类似WhatsApp的即时通讯服务设计

WhatsApp_类似WhatsApp的即时通讯服务设计_WhatsApp架构设计

1. 用户数据库

WhatsApp架构设计_WhatsApp_类似WhatsApp的即时通讯服务设计

2. 用户服务(API)3. 映射数据库

WhatsApp_WhatsApp架构设计_类似WhatsApp的即时通讯服务设计

WhatsApp_WhatsApp架构设计_类似WhatsApp的即时通讯服务设计

WhatsApp_类似WhatsApp的即时通讯服务设计_WhatsApp架构设计

类似WhatsApp的即时通讯服务设计_WhatsApp架构设计_WhatsApp

在实际应用中,结构应该类似下图:

WhatsApp架构设计_类似WhatsApp的即时通讯服务设计_WhatsApp

每个聊天服务器都包含一个队列,队列可以处理过多的消息负载,并且在向不同用户发送任何消息时不会失败。

4. 群组服务

WhatsApp架构设计_类似WhatsApp的即时通讯服务设计_WhatsApp

5. 最后上线时间服务(Last Seen Service)

6. 消息存储服务器以及临时消息存储数据库7. 多媒体消息

聊天服务获取消息并找出消息的类型,一旦聊天服务检测到消息类型是多媒体格式后,就将其存储在 AWS S3 这样的对象存储服务中。这些多媒体文件的存储链接将被存储在 SQL 或 NoSQL 数据库中,并和用户详细信息相映射,可以使用 HTTP 协议来传递这些消息。

WhatsApp架构设计_类似WhatsApp的即时通讯服务设计_WhatsApp

WhatsApp 前端WhatsApp 后端系统概要设计

WhatsApp架构设计_WhatsApp_类似WhatsApp的即时通讯服务设计

参考资料

References:

WhatsApp System Architecture: https://medium.com/interviewnoodle/whatsapp-system-architecture-8df0250d572f

AWS S3: https://aws.amazon.com/s3/

你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长WhatsApp网页版,欢迎一起交流学习。微信公众号:DeepNoMind

相关文章