设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 网络营销 > 正文

解决方案:如何设计有用的短链接服务?

来源:引流技巧 编辑:爱短链 时间:2025-08-12

短链接服务就是将一个长的URL转换成一个短的,相当于给原来的URL加别名或者链接。比如下面这个长网址就是这么长:

#rd


缩短后是这样的:

可以在展示、传输、打印甚至博文中节省更多空间,也很方便


对于输入和记忆来说,短网址的优势在推特、微博等内容受限的场合,或者需要在短信中包含网址的场合下更为明显。


当在浏览器中使用生成的短链接执行请求时,我们会发现经过一个302后,我们最终会跳转到原来的地址。


如果我们想开发类似的短链接服务,我们应该如何设计它,我们应该考虑什么?


首先,让我们了解需求:

1. 我们的服务将指定一个长 URL 并为其生成一个唯一的短 URL。链接应该足够短,以便于复制、打印等。


2. 当用户输入一个短链接时,我们的服务需要将它重定向回原来的 URL


3. 用户可以指定一个短网址过期时间,过了这个时间短网址就会过期。


4. 判断用户是否有创建权限等


参考上面百度短网址的界面设计,基本上我们上面整理出来的需求都覆盖了。我们为短 URL 创建一个 API,输入参数应包含以下内容:

返回值是一个短 URL。


当然,为了防止服务被滥用,占用过多存储空间解决方案:如何设计一个有用的短链接服务?,以及过滤权限,限制调用次数等,可以再添加一个accessKey,这样只有申请过的用户才能访问。如果有计费要求,也可以据此进行限制。


通过以上对输入参数和使用场景的估计,不难发现,相比于生成短链接,这是一个读请求重的系统。大部分请求都会通过这些短网址获取原始内容并跳转。因此,从数据库扩展到系统必须很容易。


设计

看上面的短域名,我们应该不难发现,在短域名之后,会有一个短代码“VDuK5lQT”,这就是短域名的关键。这类似于我们每个人的ID号,通过它我们可以找到原始URL。


如何生成此密钥“短代码”?让我们想一些想法。



方法一:

它可以自动递增然后像关系数据库的主键一样使用吗?显然,这里自增是不可用的,自增不能产生字符串。同时短链接服务,每个DB自增不能全局唯一短链接服务,容易重复。但是可以使用全局生成的思想。


类似于数据库中多个DB常见的主键生成任务,它们通过第三方服务生成密钥,一般称为KGS(Key Generation Service),使用KGS生成随机数字串。



通过 KGS 服务,随机生成一串特定的数字,我们称之为密钥,然后将这些密钥存入数据库以备后用。当收到生成短链接的请求时,可以直接从备份库中提取并使用。这种方式更加方便快捷。


这里需要注意KGS的高可用,不要出现单点故障。


但是,对于备用数据库中预先存在的密钥,仍然有可能多个服务器在并发请求期间获取相同的密钥。这时候可以添加一个新表来存放已经使用过的key。


每次移动已使用的密钥时,都会创建一个新的只读备用表。或者KGS预先生成一些加速请求到内存或者缓存中,保证返回到各个服务器时的同步,解决重复问题。


这部分工作也可以解决到每台服务器,KGS提供批量生成功能,每台服务器可以自行控制重复问题。


方法二:

可以通过对 URL 执行 MD5、Base64 等计算来生成唯一的字符串。但是这些加密算法生成的字符串长度比较长,我们只需要6-8位,如果使用截断,重复的概率也比较大。颠倒顺序或交换某些位的顺序也可以减少重复的机会。


假设两个人输入相同的长 URL,返回相同的短链接可能不合适。为此,我们可以添加一个自动递增的数字。如果有重复则重新生成。


对比上面两种方法,第一种方法不仅不需要对URL进行编码,而且不用担心生成的key的重复和冲突,因为这些都是KGS处理的,更加方便快捷使用。


数据复制和分区

为了方便数据库的扩展,我们需要进行分区,这样可以存储更多的数据。有几种分区方法:


基于范围

所有以字母“A”开头的短链都在一个部分中短链接服务,以字母“B”开头的那些在另一部分中,依此类推。这种查询和存储比较简单,主要问题是分区可能不平衡,

有些分区有更多的数据,有些则更少。


基于哈希

对每一个短链接、key或者原始链接进行hash,然后通过规则判断value对应的数据存放在哪个分区。基于哈希的方法,如果遇到数据存储问题


可以通过“一致性哈希”的方式进行数据迁移等。


其他

为了加快请求速度,我们可以增加Cache,将更多常用的URL添加到缓存中,每次缓存未命中时,将库中的数据更新到缓存中。


另外,还可以在Client请求Server的地方、Server请求数据库的地方、应用程序请求缓存的地方添加LoadBalancer,将流量转移到多个Server,以支持更多的请求。


在第一张图中,短网址会有一个短链接有效期控制。我们可以通过后台任务定期清理过期链接,释放存储空间。


最终生成成型设计。


以上就是关于《解决方案:如何设计有用的短链接服务?》的全部内容了,感兴趣的话可以点击右侧直接使用哦!》》在线短链接生成

相关推荐:

栏目分类

微商引流技巧网 www.yinliujiqiao.com 联系QQ:1716014443 邮箱:1716014443@qq.com

Copyright © 2019-2024 强大传媒 吉ICP备19000289号-9 网站地图 rss地图

Top