AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

系统设计问题0------基础概念

作者: 作者的头像   hpstory ,  2022-09-22 23:21:18 ,  所有人可见 ,  阅读 435


2


网站服务器 WebServer/ApplicationServer

我们经常访问的网站背后都有一台或者若干台机器,提供HTTP/HTTPS服务,这样的机器就是网站服务器。
一台性能较好的服务器大约每秒钟可以处理1000次访问请求.

数据库 Database

  • 顾名思义,就是存储数据的仓库,一般在内网中使用,不会向外网开放访问端口。
    数据库配合服务器实现对数据的增删改查。
  • 一般在系统架构中,数据库和WebServer会放在不同的机器上。

常见数据库

数据库一般分成关系型数据库(Relational database)和非关系型数据库(NoSQL)
常见的有以下几种

  1. MySQL, PostgreSQL, SQLServer, Oracle
    最常见的关系型数据库,按照结构化存储数据,要求数据有较高的稳定性,不会轻易修改,表之间的关系比较复杂。
  2. Memcached, Redis
    Key-Value NoSQL数据库,一般用作缓存系统,内存级别的访问速度,效率高,memcached要快于redis,
    但是redis支持更多的数据结构,并且memcached不支持数据持久化。适合用在存储比较耗时的计算结果,或者频繁查询的数据。
  3. MongoDB
    DocumentBased NoSQL,适合写多读少的数据
  4. Cassandra, HBase
    Column Family Based NoSQL, 也是Key-Value的结构,只不过Key,一般分为row-key和column-key,
    适合放查询请求简单的数据。

文件系统 FileSystem

操作系统的组成部分,一般是目录结构。数据库是基于文件系统存在,
换句话就是数据库系统依赖于文件系统。但是数据库系统提供了更加丰富的数据操作,
文件系统的接口比较单一。适合存储非结构化的数据,如图片,视频等等。

缓存 Cache

在系统设计中一般使用Memcache,也就是内存中的缓存。可以理解成哈希表,key-value结构。
常用的缓存软件是Memcached。由于空间有限,需要淘汰掉一些不常用的数据。
常用的算法有LRU(Least Recently Used),简易版的可以参考 LeetCode 146.LRU缓存

分析方法

  1. 明确设计需求
    • 需要实现哪些功能,找出核心功能
    • 有多大的访问量
      关注几个数值:DAU(Daily Active Users)日活跃用户,MAU(Monthly Active Users)月活跃用户,QPS(Queries Per Second)每秒查询次数。要有对应的计算过程,具体数值并不重要,可以按照自己的想法或者对方的要求进行预估。
      并发用户(Concurrent User):
      计算QPS
      - DAU * 单个用户请求次数 / 一天的秒数
      - 峰值在上面数值的基础上乘以一个系数,这个结果可以作为读频率
      - 写频率一般遵循二八原则,不超过读频率的20%
      计算出QPS之后考虑服务器和数据库的数量
      - 单台服务器QPS=1000
      - 单台SQL数据库QPS=1000
      - 单台NoSQL数据库QPS=10000
      - 单台Memcached QPS=1000000
  2. 把所有需求浏览一遍,添加服务,把同一类问题或者相同逻辑的服务合并到一起
  3. 为每个服务选择适合的存储结构,定义数据表的结构
  4. 考虑系统还有那些缺陷,如何优化系统,是否支持扩展

1 评论


用户头像
500k   2023-05-27 02:10         踩      回复

NB,居然让我发现了这个。Acwing都是宝藏啊?求问大神,系统设计面试准备,有啥推荐的学习资料嘛?


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息