用户规模驱动的系统设计

Page content

偶然看到下面这篇文章,写于2010年。站在2023这个时间点,觉得可以在自己的理解上补充一下,TODO

用户规模影响设计,具体是指用户数每上一个数量级,许多设计需要重新考虑。

下面的数字仅供理解“用户规模影响设计”,数字本身并无具体指导价值。

10万用户级别

  • 单服务器,前端、后端、Cache、DB在一起

百万级

  • DB和Cache单独部署服务器
  • DB或按业务进行拆分(sharding)
  • Cache或使用一致性hash扩展
  • 前端后端还是在一起,但是根据业务拆分,每个业务可分配不同数量的服务器

千万级

  • 开始重视架构设计,有专门技术架构师
  • 需跨机房部署
  • 前端在远程增加反向代理加速
  • 数据库在异地机房使用Slave数据库副本
  • 后端拆分出来,前后分离
  • 系统内部需要远程调用(RPC),内部需远程调用协议
  • ++ 负载均衡(ALB)

亿级

  • 架构更细分,或增加数据架构师,Cache架构师,分布式架构师
  • 数据库sharding碰到烦恼,开始考虑分布式数据服务
  • 数据访问需要根据业务特点细分
  • 开发、运维、测量、调优具备有自己的专有工具。
  • 所有服务需要地理多机房分布,具备IDC容灾设计
  • 服务可降级