首页 > 试题广场 >

如何设计一个短网址服务系统?

[问答题]
如何设计一个短网址服务系统?

我之前总结过一篇文章 短网址(short URL)系统的原理及其实现

发表于 2018-03-29 22:56:20 回复(3)
可以看看我写的这篇文章,高性能短链设计:https://www.cnblogs.com/xiekun/p/12500822.html 将它的原理写得明明白白!
发表于 2021-02-18 22:28:53 回复(0)
我是用36进制去生成短网址,参考这个:https://qvdd.cn
发表于 2020-03-12 15:14:21 回复(0)
不得不回复一下,以为前面那个的答案是错误的,千万不要被误导了。首先,hash方法是不对的,因为你无法解决冲突。长URL输入不固定,用一些解决冲突的办法,只会带入更复杂的逻辑。正确的方法是采用自增式发号机制。第一个短地址是xxx.xxx/0,第1000个就是xxx.xxx/999。当然10进制的数字比较长,这里可以把10进制转换成62进制(0-9, a ~ z, A ~ Z ). 

这里面的发号机是单机的,解决的办法其实很简单,比如两台机器,第一台发单号,第二台发双号。那么每台机器的ID自增就是ID = ID + 2.以此类推,可以用1000台发号机,每台自增1000来解决。

每次短URL转化为长URL,只需要62进制转化为10进制,然后去数据库查询该ID,找到对应的长URL。

至于301跳转还是302跳转,选择302 redirect,这样可以统计短地址的点击次数。

至于短URL和长URL不一一对应的问题,一个折衷的方案是可以使用LRU策略。

以上答案来自知乎,手打一下加深记忆,原帖来自https://www.zhihu.com/question/29270034


发表于 2017-10-02 00:24:18 回复(0)
设计合理即可,实现思路:将url哈希到一个唯一的数值,将这个数值转化为一个字符串; 另外还需要考虑系统负载等因素
发表于 2015-05-05 14:55:09 回复(1)