一.短url设计
后端面试之系统设计-短网址(Short URL)服务怎么设计?_码农在新加坡的博客-CSDN博客_短网址服务
系统设计(五) Design Tiny URL System_哔哩哔哩_bilibili
1.理解题目
2.暴力解
我们对延迟要求高,并且存储空间占用较少,所以采用延迟删除的策略。为什么?
延迟删除是比如lru的那种策略,不满足条件就随时删除了,不会一次性消耗大量cpu(定期删除),同时也节省内存空间。
3.优化解
a.吞吐量
负载均衡 当客户端访问某台设备的数据时,首先发送的请求先到一台中间服务器,并通过中间服务器在服务器集群中平均分摊到其他服务器中
,因此,当用户每次所发送的请求都将会保证服务器集群中的设备均与平摊,以此来分担服务器的压力
一文带你读懂Nginx的负载均衡 - 知乎
b.延迟优化
存储介质:
mysql数据存在磁盘里,redis数据存在缓存里,更快。
构建索引的意思是说,按照什么主键查询。
分片技术/一致性哈希:Redis数据存储 分片机制分析 - 知乎
MySQL与Redis的区别---详细!_新建先生的威宁剑的博客-CSDN博客_mysql和redis
使用缓存层:加速读写,因为缓存通常是全内存的。降低后端的负载。缓存一些复杂计算或者耗时得出的结果可以降低后端系统对CPU、IO、线程这些资源的需求,让系统运行在一个相对资源健康的环境。
二.timeline feed系统设计
1.整体
读放大写放大
2.feed的发布与订阅优化
核心思想:feed是按照写放大的思路来做的,当粉丝数很多的时候,写入时间复杂度高。采用推拉结合的方式,粉丝数很多的作者,采用读放大的方式,直接从作者发件箱读取。
3.item server优化
缓存
旁路缓存
缓存详解:穿透型缓存与旁路型缓存,缓存穿透,雪崩与击穿 - 链滴
三.即使通讯系统
四.秒杀系统
高并发下“秒杀架构”如何设计?内容涵盖:三高架构面临的问题、线程池、连接池、分库分表、nio、netty、redis、kafka、负载均衡、微服务划分等架构问题_哔哩哔哩_bilibili
https://www.youtube.com/watch?v=aeE_PqZBadg&list=PL5d0qARooeQh-XYm1Jex96TYHDm_sRojT&index=1
高并发,高可用,高性能。