短网址实现原理
2020-06-16 本文已影响0人
小怪兽狂殴奥特曼
请求流程
1.系统根据长网址,例如http://abc.com/ddd/xxx/a.html?dsada ,根据短网址算法,得到http://abc.com/sdjffd,并将sdjffd跟长网址http://abc.com/ddd/xxx/a.html?dsada的影身保存起来,然后将该短网址http://abc.com/sdjffd返回给用户。
2.用户浏览器中请求http://abc.com/sdjffd,会先解析abc.com的IP地址,得到1.2.3.4。然后客户端用sdjffd发起GET请求
3.服务器收到get请求,返回sdjffd映射的长网址。
4.客户端收到长网址后,使用301重定向到长网址。
短网址的特点
1.短。一般为6个字符。
2.容量大。要能容纳足够多的信息。
3.乱。让别人猜不到规律。
思路
1.在mysql中建立一张表tbl_link,分别有id(bigint),url(长连接)字段。让id自增。
2.简历一个码表,使用0~9A-Za-z 62个字符,可以简历一个最长为62进制的码表。6个字符长度,最大容量为568亿,完全满足我们容量大和字符少的要求。这个码表是保密的,这样子生成出来的短网址别人就猜不到。
3.生成一个短网址时,先用长连接到tbl_link表,查询url字段是否存在。如果不存在,则插入,然后取出id,使用码表将其转换为我们对应的进制。转换之后的进制表达就是我们的短链接的关键词。当客户端用这个关键词来服务器查询时,我们将关键词用码表转换成对应的id,然后去tbl_link表中查出对应的长连接返回即可。
4.存长连接,为了加快查找速度,可以考虑将长连接哈希(MD5)一遍,然后将哈希值一同存起来,这样子查询的时候会快一些。