淘宝网址缩短:微博、淘宝是怎么把长网址压缩成短网址的?背后的技术并不难

我们都用过这么一个功能淘宝网址缩短,一个非常长的网址,可以被压缩称一个非常短的链接,这背后用到的是什么样的技术呢?背后又隐藏着怎么样的算法与数据结构?我们如何能够快速的进行实现。

淘宝网址缩短:微博、淘宝是怎么把长网址压缩成短网址的?背后的技术并不难

短网址技术其实非常的简单,我们可以将这个技术分成两部分,第一部分是长网址的压缩,也就是如何把长连接地址压缩成短连接地址,第二部分是如何把访问短链接地址的时候又重新变成访问长链接地址淘宝网址缩短。

淘宝网址缩短:微博、淘宝是怎么把长网址压缩成短网址的?背后的技术并不难

哈希算法

淘宝网址缩短:微博、淘宝是怎么把长网址压缩成短网址的?背后的技术并不难

最常见的短网址实现方案便是使用哈希算法淘宝网址缩短,相信学过算法与数据结构的同学对这个算法并不陌生,哈希算法可以把非常长的文本甚至文件映射成一个字符串或者数字,这种算法并不陌生,我们常见的文件md5算法也属于哈希算法中的一种。

但是md5比较长,通常我们会使用murmurhash来进行哈希,这是一种比较轻量级的哈希算法。我们将哈希后的值跟长连接还有失效时间一起保存在数据库里面,后面通过哈希后的值,就能够找到对应的原始长链接地址了。

但是,这里还存在2个细节问题,首先是哈希地址冲突了怎么办?常见的哈希冲突解决方法,便是从后面一直找,找到一个空的插槽放进去,如果学过算法与数据结构,便知道这种算法比较不稳定,并且实现起来也麻烦。我们有一个更简单的做法,就是在原始链接后面再拼上一个自定义的字符串进行哈希。

另外一个问题,便是murmurhash的哈希结果是一个32位的数字,只有0到9组成,如果似乎几千万的一个数字,也比较长,那么我们可以怎么办呢?我们可以把这个简单十进制数字转成更高的进制,把字母a到z与A到Z都用上,就可以把字符串压到非常短了。

重定向那么如何访问一个短地址的时候变成一个长地址呢?同理也是非常的简单,运用到的便是网页重定向功能。

用户先使用短地址到后台查询,后台到数据库中进行查询后,便校验数据的合法性,例如数据过期之类的,紧接着返回长地址与重定向错误码,浏览器接受到错误地址后便开始重定向到真实地址。

总结看,其实只要非常简单的算法跟存储,我们变成制作一个短地址服务器,如果你有兴趣,可以关注我,后面我们会用简单的代码进行实现。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。同名公众号(沙茶敏碎碎念)

怎么把淘宝的链接变成短连接?

第一步:功能入口:官方客户关系管理后台(ecrm.taobao.com)——客户画像——进入新版——通道——短链(由于新框架还未开发完毕,原谅我藏的这么深) 直接创建短链链接: /channel/short_link_manager.htm 第二步:新建短链:首页、活动链接、宝贝(注意:只能选择一个宝贝,并且只有库存数量>=50的商品能参与报名)都可以生产短链。点击和成交数据查看:短链创建成功后,可以查看短链的点击和成交情况。 第三步:短链创建成功后,通过短信、旺旺等发送给买家,让买家收到来自你的消息。