专栏首页IMWeb前端团队短信中的链接为什么那么短?

短信中的链接为什么那么短?

本文作者:IMWeb coverguo 原文出处:IMWeb社区 未经同意,禁止转载

前言

前段时间读了一些关于短网址的文章,加上刚好收到一个含有短网址的短信。一时兴起或者说是顺其自然就写了这篇文章哈。

什么是短 URL?

短网址(Short URL),顾名思义就是比较短的 URL 网络地址, 在如今 Web 2.0 的时代,短网址十分得流行,在业界已经有许多短网址生成的服务,使我们可以用各位简短的网址来替代原来十分冗长的网址。让分享的网页链接不会因为太长而引起用户反感,影响体验,使使用者更容易分享哈。

事实上,短网址,也就是短链接在我们生活中随处可见,如微博分享、外卖订单信息、或者如上面的快递短信,短信中就含有一条短网址 http://tb.cn/vvDezXw 。)

当我们打开短网址时,网页会直接跳转到你要缩短的网址,就如打开上面的短网址,其会通过重定向的方式如 302 跳转到天猫的一个页面网址(相对短网址来说,所对应的网址长的多)

短网址的意义

使用短链接有什么好处呢?事实上,它有下面几个好处:

  • 内容需要(缩短URL满足字数限制)
  • 简介美观(用户友好)
  • 统计需要(网页流量统计、点击统计等)

无可否认的是,在微博和手机短信提醒等限制字数(一条短信最多就一两百个字)的地方来使用短网址,不得不说是一个不错的方案。一条短信是有限制字数,如果分享链接过长,就无法展示更多消息内容了。因此我们可以发现,在许多短信中,其网址都是短网址 URL

我们上面天猫的一个短网址 http://tb.cn/vvDezXw 其是通过 302 的方式,即临时重定向的方式进行跳转的。目的就是为来能够在跳转前做一些短网址打开的次数统计,这些统计数据能够成为大数据分析的数据源,从而分析用户的生活习惯兴趣爱好。

短网址的原理

那么,短网址是如何生成的呢?短网址服务是如何将那么多的长网址对应到相应的短网址呢?这里简单说明下:

短网址通常结构如下:域名/短网址id

短网址 id 其通常由 26 个大写字母 + 26 小写字母 +10 个数字 即 62 种字符组成,随机生成 6 到 7 个,然后组成对应一个 短网址 id,并存入相应的数据存储服务中。

当短网址被访问的时候,短网址的解析服务,会根据 id 查询到对应页面从而实现相应的跳转。

如何保证短网址 id 不重复

事实上,假如短网址 id 为 6 位,那就是共有 2^62 个短网址。超过这个数目的网页可能性并不大。但在生成即发放短网址的时候,需要保证能够发送不重复的短网址 id。

为了保证不冲突和重复,大多数短网址服务都会采用自增的方式来分发 id,如第一个使用这个服务的人得到的短地址是 http://xxx/0 ,第11个是 http://xxx/a 等依次生成。

对于大多数小型的短网址服务,直接使用 mysql 的自增索引就可以保证不冲突,但这种方式不太适合大型的应用。因为每次操作都需要涉及数据库的增删的资源损耗。因此对于一些大型应用,我们可以通过一些分布式 key-value 系统做短网址的分发。同时不停的自增就可以来。

如何分布式生成不重复的短网址?

如果生成短网址的服务是分布式的(用户量很大,只有一台生成一台不够用,如天猫、新浪微博),那么每个服务节点要保持同步自增,而不起冲突。是怎么做的呢?

事实上我们可以这样做。加入我们要实现有 5 台分布的短网址服务,此时我们让:

  • 服务 1,从 1 开始发放,然后每次自增 5 即 1、6、11、16...
  • 服务 2,从 2 开始发放,然后每次自增 5 即 2、7、12、17...
  • 服务 3,从 3 开始发放,然后每次自增 5 即 3、8、13、18...
  • 服务 4,从 4 开始发放,然后每次自增 5 即 4、9、14、19...
  • 服务 5,从 5 开始发放,然后每次自增 5 即 5、10、15、20...

这样每个分布的服务都能够独立工作,从而互不干扰。从而实现分布式发放。

公共短网址服务

正如前面所说,市面上有许多短网址的服务商。如下所示:

1、google 短网址服务 goo.gl

google 的 goo.gl 每次同样的网址生成的短网址都是不一样的

2、新浪 短网址服务 /sina.lt

而新浪的则是一定时间内,同样的网址生成的短网址都是一样的。且支持短网址后缀选择。

参考文章

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:http://imweb.io复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 短链接的解决方案

    本文章首发于语雀! 通过各种高科技功能同步到Hajeekn 的博客 方便跳转,所以有了短链接,这篇文章带来短链接的几个解决方案

    Hajeekn
  • 短链接的设计与实现

    短链接的实现在生活中比较常见,比如我们接受到的广告短信,短信会包含他们的活动链接。

    梁规晓
  • 最近学到的「短链接」知识

    最近接了一个需求,涉及到了短链接的相关的知识,于是去查阅了相关的资料,在这里给大家整理分享一下。

    Java3y
  • 长连接和短链接的区别

    HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,...

    后端码匠
  • 藏在短链接下的挖矿木马:NovelMiner

    使用短链接跳转到长网址是网友分享链接的常见方式,尤其是在有字数限制的情况下,冗长的网址不利于显示,短链生成无疑是最便捷的服务之一。然而,由于短链接隐藏了其指向的...

    FB客服
  • 短链接服务Octopus的实现与源码开放

    半年前(2020-06)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信、模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求。当时...

    Throwable
  • 关于长链接,短链接,异步,同步,单工,双工的定义

    lyb-geek
  • 如何对短链接服务暴露的URL进行网络侦察

    Urlhunter是一款网络侦察和信息收集工具,该工具基于Go语言开发。在该工具的帮助下,广大研究人员可以轻松搜索通过短链接服务暴露的URL以及相关资源,比如说...

    FB客服
  • 一个go语言实现的短链接服务

    一个go语言实现的短链接服务 首先,博客转移到 wusay.org 了,去年没交费,博客都没了。。。刚刚恢复过来,以前的文章没了,慢慢补吧。 什么是短链接服务 ...

    李海彬
  • 剖析 微博短链接算法 里的 位运算 操作

    本文主要写给对 java 位运算不是很了解的童鞋 和 我自己 昨天研究了一下微博短链接的算法,但是发现自己对算法里面的位运算不是很明白,所以有了今天这篇文...

    用户1688446
  • wordpress 搜索结果去除 Simple Urls 插件产生的短链接

    朋友的 wordpress 使用了 simple urls 插件来做外链转内链的工作,确实很方便,但是有一个弊端,就是在博客中搜索关键词的时候,搜索结果中就会出...

    魏艾斯博客www.vpsss.net
  • 一个go语言实现的短链接服务

    一个go语言实现的短链接服务 首先,博客转移到 wusay.org 了,去年没交费,博客都没了。。。刚刚恢复过来,以前的文章没了,慢慢补吧。 什么是短链接服务 ...

    李海彬
  • 东半球最接地气的短链接系统设计

    今天下午,烟哥和同事在厕所里排队等坑的时候(人多坑少)。想象一下一个场景,我正在一边排队,一边拿着手机撩妹。前面一个同事,拿着手机短信转过头来和我聊天。

    Java3y
  • 世界上最好的语言搭建短链接及统计功能

    前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数、下载量、来源以及时间等等...

    小柒2012

扫码关注腾讯云开发者

领取腾讯云代金券