关于微博短链接实现机制
最近思考了下微博短链接的碰撞可能性于是形成下面博文(部分内容来自网上搜索)
短链接出现的原因:
我们平时使用的URL普遍比较长,
例如 http://www.4yue.net/?post=91 这个比较短了
相比 http://t.cn/RPaRcWl 这个链接 就长了很多。
(经过测试同一个URL我生成了2个短链接: http://t.cn/RvTIEWF )
微博为了节约字数存在,就出现了这个短链接的功能。
短网址映射算法的理论(网上找到的资料):
理论上这样一个长URL获取的短链接 有4个,任意一个都可以成为映射对象。
碰撞可能性:
MD5的碰撞可能性非常小接近0,而在MD5基础上再进行提取的6位字符的概率
粗略计算 是6位 数字和字母的排列种类 (10*24)的6次幂= 1.91102976 * 10 14
碰撞的概率会随着 短链接的生成而递增,如果低于上亿基本的 数据量 感觉碰撞的可能性都没有。
(此处不包含恶意攻击,就算32位MD5在恶意攻击下也可以攻破达到碰撞的目的)
存储数据库:
(推荐TTServer)
Tokyo Cabinet 是日本人 Mikio Hirabayashi(平林幹雄)のページ
开发的一款DBM数据库(注:大名鼎鼎的DBM数据库qdbm就是他开发的),
该数据库读写非常快。insert:0.4sec/1000000 recordes(2500000qps),
写入100万数据只需要0.4秒。search:0.33sec/1000000 recordes (3000000 qps),
读取100万数据只需要0.33秒。
截图一张
本文固定链接: http://www.4yue.net/post-105.html
发表评论