NOTE

2.2 如何设计短URL系统

1. 什么是短URL 把普通网址,转换成比较短的网址 2. 为什么需要短URL 短,便于发布 3. 短URL系统设计 假设短URL系统的URI为 http://t.cn 3.1. 写过程 1. 输入需要转换的长URL http://www.example.com 2. 查询Redis是否存在 www

系统设计创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是短URL

把普通网址,转换成比较短的网址

2. 为什么需要短URL

短,便于发布

3. 短URL系统设计

假设短URL系统的URI为http://t.cn

3.1. 写过程

  1. 输入需要转换的长URLhttp://www.example.com
  2. 查询Redis是否存在www.example.com对应的短URL,存在则返回
  3. 不存在那么使用Redis自增生成ID
  4. 把自增值转换成62进制,这个62进制数假设为RlB2PdD
    • 低进制转化为高进制时,字符数会减少
  5. 把RlB2PdD,www.example.com对应的关系记录到Redis中

3.2. 查询过程

  1. 浏览器里输入 http://t.cn/RlB2PdD
  2. DNS首先解析获得http://t.cn的 IP 地址
  3. 当 DNS 获得 IP 地址以后(比如:74.125.225.72),会向这个地址发送 HTTP GET 请求,查询短码RlB2PdD
  4. http://t.cn服务器会通过短码RlB2PdD获取对应的长 URL
  5. 请求通过 HTTP 301 转到对应的长URLhttp://www.example.com(这里是利用浏览器的机制,如果是有前端配合的话,那么返回Lhttp://www.example.com就行,前端自己跳转)
    • 301是永久重定向,因为短地址一经生成就不会变化,并且对服务器压力也小

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看