目录
一、背景
1.1短链接的优势
1.1.1优点一
1.1.2优点二
1.1.3优点三
1.1.4优点四
1.1.4优点五
二、原理
2.1利用http重定向
3.1实现方案
3.1.1发号器实现
3.1.2存储实现
3.1.3映射实现
3.2架构图
一、背景
短链在互联网中盛行,搭建自己短链平台,可以有效提供短链服务支持。也可以使用第三方短链服务平台,但由被插播广告,泄露长链统计等相关数据。本文会介绍短链实现原理,搭建的代码。
1.1短链接的优势
1.1.1优点一
缩短长链接的地址长度,减少空间。
1.1.2优点二
避免原链接被屏蔽
1.1.3优点三
短链简洁、美观、不暴露参数
1.1.4优点四
保证短链不变时,修改原地址。
1.1.4优点五
短链还可以进行业务统计
二、原理
2.1利用http重定向
http重定向可以分为临时重定向和永久重定向
可以参考博客:【计算机网络】HTTP 重定向_http重定向_千筠Wyman的博客-CSDN博客
三、实现方案及架构图
系统核心实现,包含三个大的功能, 发号,存储,映射。
发号:使用发号器发号,每个长链接分配不同的id;存储:存储短链与长链的关系;映射:短链请求服务转环为长链接并重定向给你客户端。
3.1实现方案
3.1.1发号器实现
发号器的功能是使用发号器发号,每个长链接分配不同的id。可以选用hash算法或自增id。
方案一:
哈希算法生成ID:
(1)md5算法,通常用于信息摘要
(2)Sha256算法
(3)MurmurHash,乘法和旋转的hash算法,是一种非加密型哈希函数。
可以参考:哈希MurmurHash算法详解_yjgithub的博客-CSDN博客
方案二:
数据库自动主键,msyql、oracle的自增主键生成ID
方案三:
uuid,guid生成ID
方案四:
分布式主键,雪花算法。
3.1.2存储实现
可以选用mysql、oracle、MongoDB。
3.1.3映射实现
使用缓存技术redis中间件。
301永久重定向和 302 临时重定向。
使用 301 虽然可以减少服务器的压力,但是无法在 server 层获取到短网址的访问次数了,如果链接刚好是某个活动的链接,就无法分析此活动的效果以及用于大数据分析了。
而 302 虽然会增加服务器压力,但便于在 server 层统计访问数,所以如果对这些数据有需求,可以采用 302,因为这点代价是值得的,但是具体采用哪种跳转方式,还是要结合实际情况进行选型。
3.2架构图
web服务可以部署多节点,通过负载均衡转发请求。redis和mysql也都可以使用集群模式。