【系统设计】笔记3

发布时间 2024-01-09 09:27:01作者: dddddcoke

尽管此刻没有如愿以偿找到合适的ft,但我希望能够充分认识到自己的不足,积蓄力量。相信在不久的将来未来会有爆发的机会。

---------------------------------------------------------------------------------------------

知识的广度(component, 目的)和深度(sde1: 3年以内,sde2: 4年以上,sde3:team lead,org impact可小可大,深度,3+:org lead, 领域见解)

 

Design user system

设计用户系统,实现功能包括注册、登陆、用户信息查询,好友关系存储

Scenario:

注册,登陆,查询(需求量大),用户信息修改

支持100M DAU

注册,登陆,信息修改QPS

  100M * 0.1 / 86400 ~100

  0.1 = 平均每个用户每天登陆+注册+信息修改

  peak = 100 * 3 = 300 -> Mysql

查询的QPS

  100M * 100 / 86400 ~100k

  100 = 平均每个用户每天查询用户信息相关的操作次数(查看好友,发信息,更新消息主页)

  peak = 100k * 3 = 300k ->Redis

MySql/PosgreSql等SQL数据库性能: 1k QPS

MongoDB/Cassandra等硬盘型Nosql数据库性能:10k QPS

Redis/Memcached等内存型Nosql数据库性能:100k~1m QPS

 

用户系统特点:读非常多,写非常少。读多写少,一定用cache进行优化。

Service:

  一个authenticationService负责登陆注册

  一个userService负责用户信息存储和查询

  一个friendshipService负责好友关系存储

Storage:

  

Scale: