实现一个短域名系统
实现一个短域名系统
面试官的提问
评估
输入是什么?
输出是什么?
约束是什么?
方案设计
可行解
增加过期时间怎么处理?
如何保证短域名的唯一性?
更优解
吞吐量优化
延迟优化
可靠性优化
迭代效率,可运维性
安全性
Bad Case 分析
总结
实现一个短
域名系统
系统设计-短地址系统_哔哩哔哩_bilibili
面试官的提问
设计一个短域名系统
评估
输入是什么?
一个冗长的域名, 以及一个过期时间和一个自定义的别名。
输出是什么?
自定义别名或者随机生成的短域名,在过期时间到来前访问都可以被重定向到原始的冗长域名上
约束是什么?
过期后将失效
短域名是唯一的
支持自定义短域名,长度在7个字符(不含域名长度),由[0-9,a-z,A-Z]等字符组成
QPS
写
DAU
= 100M -> QPS = 100M
* 0.1
/
86400
=
1
K -> 峰值
2
k -> 预估值
= 4
K
读 DAU = 100M -> QPS = 100M * 10 / 86400 = 115k -> 峰值230k-> 预估值460k
这是一个读多写少的系统
延迟 = 10ms以内
存储
= 128+7 =
100 bytes/条 * 1500 * 60 * 60 * 24 * 365 = 20T/年
可靠性: 5个9(可运维性, 可扩展性,迭代效率)
安全性: 防止被人爬取,盗用数据
方案设计
可行解
写接口
输入长域名,判断是否曾经存储过 是的话不需要进一步存储
生成一个从未用过的短域名