搭建短链服务

目录

一、背景

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也都可以使用集群模式。

这是我的代码仓库实现的连接:

short-chain: 短链项目

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值