![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统设计
关关教你学编程
这个作者很懒,什么都没留下…
展开
-
设计一个网页爬虫
一、需求沟通1、用例需求说明:1. 百度这个网站,通过一系列的url链接,然后去爬取一系列的网站上的数据,生成标题和摘要信息存下来。2. 用户通过在百度搜索框内输入搜索词之后,可以看到相关的搜索结果列表。这些列表显示的就是之前爬取到的页面标题和摘要。2、算数二、答案1、概要设计2、扩展设计3、关键点总结1. 爬虫的部分是不对用户的,...原创 2020-02-15 17:14:11 · 583 阅读 · 0 评论 -
设计推特时间轴与搜索功能
一、需求沟通1、用例1. 用户发布了一篇推特服务将推特推送给关注者,给他们发送消息通知与邮件2. 用户浏览用户时间轴(用户最近的活动)3. 用户浏览主页时间轴(用户关注的人最近的活动)4. 用户搜索关键词5. 服务需要有高可用性2、算数二、答案1、概要设计2、扩展设计3、关键点总结1....原创 2020-02-15 16:02:11 · 1319 阅读 · 0 评论 -
在 AWS 上设计支持百万级到千万级用户的系统
一、需求沟通1、用例1. 用户进行读或写请求服务进行处理,存储用户数据,然后返回结果2. 服务需要从支持小规模用户开始到百万用户在我们演化架构来处理大量的用户和请求时,讨论一般的扩展模式服务高可用2、算数二、答案1、概要设计Web Server用来读、写、存储2、扩展设计,用户+运用纵向扩展: 选择一台更大容量(性能更好)的服务器...原创 2020-02-15 11:38:18 · 569 阅读 · 0 评论 -
为 Amazon 设计分类售卖排行
一、需求沟通1、用例1、服务根据分类计算过去一周中最受欢迎的商品2、用户通过分类浏览过去一周中最受欢迎的商品3、服务有着高可用性2、算数二、答案1、概要设计2、扩展设计3、关键点总结1、Sales API负责交易的API2、Read API负责浏览的API3、Sales Rank API通过交易数据按分类计算上周最受...原创 2020-02-15 00:03:20 · 326 阅读 · 0 评论 -
设计 Mint.com
一、需求沟通1、用例2、算数二、答案1、概要设计2、设计扩展3、关键点总结1、Accounts API:负责账户相关的业务2、Queue:(1)数据量大,需要异步处理(2)不需要实时(3)不能丢数据,著名的队列中间件:Kafka,为了确认不丢数据,有个ACK确认机制,写进去之后,必须收到ACK=1,表明数据已经写入了,才...原创 2020-02-14 18:20:43 · 508 阅读 · 0 评论 -
为一个社交网络设计数据结构
一、需求沟通1、用例1、用户寻找某人并显示与被寻人之间的最短路径2、服务高可用2、算数二、答案1、概要设计2、扩展设计3、关键点总结1、Query API查询API,负责查询相关的业务2、Lookup Service查询一个用户及其好友关系,先找到该用户存在哪一台机器上,再锁定好友关系3、Person Server存储一个用...原创 2020-02-14 17:08:18 · 942 阅读 · 0 评论 -
设计一个键-值缓存来存储最近 web 服务查询的结果
一、需求沟通1、用例1、用户发送一个搜索请求,命中缓存2、用户发送一个搜索请求,未命中缓存3、服务有着高可用性2、算数二、答案1、概要设计...原创 2020-02-14 14:13:24 · 225 阅读 · 0 评论 -
设计 Pastebin.com (或者 Bit.ly)
一、需求沟通1、用例1、用户输入一些文本,然后得到一个随机生成的链接过期时间 默认为永不过期 可选设置为一定时间过期 2、用户输入粘贴板中的 url,查看内容3、用户是匿名访问的4、服务需要能够对页面进行跟踪分析月访问量统计5、服务将过期的内容删除6、服务有着高可用性2、算数二、答案1、概要设计2、扩展设计3、关键点总结...原创 2020-02-14 12:29:09 · 940 阅读 · 0 评论 -
系统设计-一致性hash
本文参考了深入浅出一致性Hash原理1、为什么要设计一致性hash负载均衡在有状态情况下,怎么堆转发机器?比如用户uid=a的所有请求必须转发到某个服务器b上。采用哈西表做一个映射,把用户ID和机器ID一一对应起来。但这个时候我们面临一个问题:普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,服务器机器数发生改变,用户id与服务器...原创 2019-11-28 16:08:07 · 316 阅读 · 0 评论 -
系统设计-后台系统的伸缩性
1、软件分层分层思想很普及,把数据流拆成几段,比如接入层(load balancer+webserver),应用服务层(platformserver),数据存储层(数据库database、nosql)。2、伸缩性定义一种设计目标,使得系统通过加硬件(堆机器)能够解决各种业务问题,不存在性能瓶颈问题。比如微信红包,接入层、plaform层、数据存储层的数据通道是否够宽,扛得...原创 2019-11-28 16:09:03 · 488 阅读 · 1 评论 -
一个客户端请求到后台的流程:tcp-ip 7层网络通信、负载均衡、API层、数据库
图中的箭头表示数据的流向,数据传输是通过TCP-IP七层网络通信协议来实现:1、tcp-ip 7层网络通信实际应用中,一般都是5层:网络层(IP层)、传输层、应用层,链路层和物理层。链路层和物理层很偏硬件,不怎么用到。会话层什么的,大家一般都不这么用,都嫌麻烦。1.1 网络层(IP层)网络数据都是以一个个包裹形式传输的。网络包裹格式(char []): | IP包头 | ...原创 2019-11-22 11:52:31 · 1318 阅读 · 0 评论 -
URL、域名、IP地址、DNS
1、URL:统一资源定位符,俗称为网页地址(网址)。URL的语法方案:访问服务器获取资源所使用的协议,如:http、ftp 用户:访问资源的用户名 密码:用户名后可能包含的密码 主机:资源宿主服务器的主机名或ip地址 端口:资源宿主服务器正在监听的端口号,默认为 80 路径:服务器资源本地名,由斜杠(/)与前面URL组件分隔开 参数:相互之间,以及与URL前面组件由分号(;...原创 2019-11-22 11:26:12 · 1368 阅读 · 0 评论