【系统设计】4S分析法

概述

Scenario 场景:需要设计哪些功能,设计的质量性能等等需要有什么要求
Service 服务:大系统拆分成小系统
Storage 存储:数据如何存储,如何访问
Scale 升级:优化维护,解决缺陷,处理可能遇到的问题

常用术语

  • Concurrent User 并发用户
    • 日活跃*用户平均请求次数/一天多少秒=每秒请求数
    • 请求峰值
    • 增长量/变化的需求
  • Read QPS(Queries Per Second)读频率
  • Write QPS(Queries Per Second)写频率

Scenario 场景

需要考虑的方面
  • 需要设计哪些功能
  • 需要承受多大的访问量(DAU:日活跃用户 MAU:月活跃用户)
  • 需求者的要求
实战:设计一个论坛

罗列功能

  • 注册/登陆
  • 用户信息展示/编辑
  • 多媒体文件上传
  • 搜索
  • 发帖/转发
  • 数据流(个人用户数据流/全局数据流)
  • 关注/取消关注

侧重主体功能

  • 注册/登陆
  • 数据流(个人用户数据流/全局数据流)
  • 发帖
  • 关注/取消关注
QPS
  • QPS=100 用一台的普通的电脑做服务器就可以了
  • QPS=1k 需要一台好一点的服务器,并且需要考虑宕机的处理手段
  • QPS=1m 需要建设一千台服务器集群,并且需要考虑某一个节点宕机的处理方法
  • 一台服务器预估可以承受1kQPS(理想状况下,比如请求和处理比较轻量级,服务器性能比较好,否则会往往会小于1k,以下三点也是在理想情况下考虑)
  • 一台SQL Database预估可以承受1kQPS
  • Cassandra预估可以承受10kQPS
  • Memcached预估可以承受1mQPS

Service 服务

1.大系统拆分成小系统
2.小系统归并成完整系统

Storage 存储

选择

关系型数据库:用户信息
非关系型数据库:推文、社交图谱
文件系统:图片、视频
缓存系统:高速访问,适合访问频率高的数据

Scale 升级

  • 解决bug,设计缺陷
  • 拓展功能
  • 应对特殊情况
  • 提高鲁棒性
  • 提高拓展性,应对流量暴增

案例 新鲜事系统

举例

比如朋友圈,微博,QQ空间

场景

需要获取所有好友的动态里面时间最新的100条。

解决方法

方案1:主动拉取
当需要查看动态时,主动拉取所有好友的前100条动态,并做一次K路归并,获取最靠新的100条动态,展示。
缺点
需要现场算,没法直接取,所以速度比较慢
方案2:主动投递
当一条动态发布时,主动投递给所有好友,这样子获取动态时直接读数据即可,不要处理数据
缺点
需要花费额外空间存储投递信息,在发帖的时候需要进行n次投递(n为好友数量),不过可以用异步任务解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值