工作这么久了,你应该知道的短链接架构设计

本文介绍了短链接的必要性及其实现流程,包括用户输入长链接获取短链接、通过短链接进行重定向。在关键问题剖析中,讨论了缩短链接的算法,如使用自增ID、16进制和62进制转换,并提到了重定向方式的重要性。
摘要由CSDN通过智能技术生成

如果我们在平时的沟通中发送个这么长的玩意你说它裂不裂开,所以市面上就有了很多短链接生成器应运而生。

在这里插入图片描述

看到没,直接把又臭又长的url,搞成了短小精悍型的。

在浏览器输入https://t.1yb.co/bo6a会跳转到上面的网页。

为什么使用短链接


说几个理由吧

  • 在浏览器输入url的时候,肯定需要越短越好啊

  • 如果需要在内存或者db中存储url,那肯定越短越好啊

  • url沟通传输中还可以隐藏了一部分参数,对不对

短链接如何实现


实现流程如下

  • 1.先是用户输入长连接去缩短链接,返回一个短链接给用户

  • 2.然后用户在浏览器地址输入短链时,根据短链接重定向跳转到长连接网址

在这里插入图片描述

即相应的设计2个接口:

  • 【缩短链接接口】/api/short?longurl=xxx

  • 【重定向接口】/{shorturl}

关键问题剖析

我们这里仅仅是拿在实现中,比较有难点或者争论的地方来阐述。

1. 缩短链接的算法

1、我首先想到的就是用UUID全局唯一特性来实现一一映射长连接。

效果如下

| shorturl | longurl |

| — | — |

| fc5bc4b050ec4b2a9cfb697786f6e9e8 | https://www.baidu.com/abcdefg?key=7387746869684555 |

| fssdff83ikf8ec41239cfb69sdffeegakhj | https://www.baidu.com/abcdefg?key=7ksjkkldoiueell;g;aa |

但是这个是32个字符,实现的短链效果如下:http://url.cn/fc5bc4b050ec4b2a9cfb697786f6e9e8,不是很理想啊。

2、然后就想着是不是可以使用数据库自增的id来实现。

效果如下:

| shorturl | longurl |

| — | — |

| 1 | https://www.baidu.com/abcdefg?key=7387746869684555 |

| … | … |

| 100000000 | https://www.baidu.com/abcdefg?key=7ksjkkldoiueell;g;aa |

实现的短链效果如下:http://url.cn/1,刚开始的时候是短,但是随着数据量的增加也容易裂开啊,例如:当有一亿映射的时候,地址就变成这样了http://url.cn/100000000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值