十万用户规模 IM(即时聊天) 架构设计

业务背景

假设你现在正在一个创业公司担任 CTO,因为微信工作生活娱乐不区分,已经发生了很多次将敏感信息发错人甚至发错群的尴尬事件了!你司 CEO 决定做一款 IM 工具,为了区别微信和 QQ 大众化的 IM 需求,你们公司主打安全 IM,这款产品的竞争力如下:主打私密聊天,严格控制私密好友的数量,而不是像微信一样,买个菜都可能要加个微信。

公司背景】

1.  技术团队大约10个人,后端6个,前端2个,  Android 2个,  iOS 还没有;

2. 后端 Java 为主,大部分是 3-5年左右的

3.  后端具备 MySQL微服务、  Redis 等开发使用经验;

4.  后端没有大数据和推荐相关经验。

业务基本场景

十万用户规模 IM(即时聊天) 架构设计

1. 每个用都会通过算法生成非对称的公钥和私钥;

2. 用户发送的消息会通过公钥加密,接收用户的消息使用自己的私钥解密;

3.  只能创建一对一聊天;

4. 聊天消息“阅后即焚”,最多只保留60分钟;

5. 无需使用手机号注册

6.  每个用户最多20个好友。

总体架构思路

板说我们3年内要做到1千万注册用户,作为 CTO 的你应该如何做架构设计?

十万:地快,但是如果业务发展很快, 构很快不适应了怎么办?

百万:落地慢一些,但同样面临业务发展过 的风险。

千万:落地时间可能要6个月以上,但基本上3年内无需再动架构

前设计,架构真的不用动么?

十万用户规模 IM(即时聊天) 架构设计

1. 业务规模变化

超前化设计应对。

2. 业务多样性

法预测会做什么功能,  业务多样 会导致团队人数增多到多少更 法预测。

3. 技术发展

无法预测,尤其是和法律政策相关的,例如区块链、国产化。

万用户规模存储性能估算

十万用户规模 IM(即时聊天) 架构设计

注册】

万用户注册信息。

登录】

IM 是比较活跃的产品,但由于是全新的产品,我们假设十万注册用户,每天活跃用户有40%,登录每天4万。

加好友】

每个活跃用户最多20个好友,好友关系数 4万 * 20 = 80万 关系数据

聊天】

假设每个活跃户每天向5位好友发送100条消息,则消息数量为:4万 * 5 * 100 = 2000万,且数据当天基本都被删除了, 所以写入、读取、删除次数都可以估算为2000万

储架构设计

十万用户规模 IM(即时聊天) 架构设计

10万用户注册信息, 4万登录请求 ,80万关系数据。

十万用户规模 IM(即时聊天) 架构设计2000万写入,  2000万读取,  2000万删除。

万用户规模计算性能估算

十万用户规模 IM(即时聊天) 架构设计


注册】

1年达到十万用户注册,注册 TPS 很低。

登录】

虽然 IM 是比较活跃的产品,但由于是全新的产,我们假设十万注册用户,每天活跃用户有40%,假设登录时间集中在早晚4小时,登录 TPS值:4万 / 14400 = 3。

加好友】

每个跃用户最多20个好友,好友关系数 4万 * 20 = 80万数据,按照1年内来计算,  TPS 可以忽略不计。

聊天】

设每个活跃用户每天向5位好友发送100条消息,则消息数量为:4万 * 5 * 100 = 2000万;

每天集中在早中晚3个时间段6小时内(早上1小时中午1小时晚上4小时);

送消息 TPS :2000万/ ( 3600*6)  ≈ 1000;

       读取消息 QPS = 发送 TPS,删除消息 TPS ≈发送消息 TPS。

算架构之负载均衡

十万用户规模 IM(即时聊天) 架构设计

算架构之缓存架构

十万用户规模 IM(即时聊天) 架构设计

扩展架构设计

十万用户规模 IM(即时聊天) 架构设计

可用架构设计 – 同城数据灾备

十万用户规模 IM(即时聊天) 架构设计

原文始发于微信公众号(二进制跳动):十万用户规模 IM(即时聊天) 架构设计

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/167217.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!