Skip to content

app5201314/-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

首先我介绍一下为什么做这个项目。

平时短信,邮件里面经常有那种商家推广活动的短链接,点击之后就发现浏览器302重定向到了另一个网站。

我就觉得好神奇,这个短链接是怎么实现的呢?于是我就开始了解短链接的原理。

短链接的原理是什么呢?其实就是一个映射关系,把长链接映射到一个短链接上。

在这个过程中,我还了解到,商家是可以看到短链接的访问情况的,这样就可以统计出来有多少人点击了这个链接,从而实现更好的推广效果。

所以我就想,能不能自己实现一个短链接服务呢?这样就可以自己生成短链接,并且监控短链接的访问情况。

于是就和几个朋友一起,开始了这个短链接项目的开发。

我主要负责这个项目的后端开发,后管系统主要是给企业用户使用的,提供了短链接创建、修改、查看监控等功能。

中台系统主要是为用户提供api接口,后管系统是通过调用中台系统的api接口来实现相应功能的,同时短链接跳转也是通过中台系统来实现的。

其中也遇到了不少难点,比如如何生成尽可能短的短链接,如何确保生成的短链接不重复,如何确保大量用户访问场景下,短链接正常跳转并维持高可用等问题。

这里面涉及到了很多技术,比如分布式读写锁、缓存、布隆过滤器、消息队列等。

可优化的点: 查询短链接访问记录时,使用线程池实现异步查询,提高查询效率。

常见问题:

1.如何保证短链接生成最短? 我们采用了谷歌的MurMurHash算法,生成了32位的hash值,然后再进行base62编码,形成6位的短链接后缀,62^6 = 56800235584,可以生成近57亿个短链接,基本上够用了。

2.如何保证短链接生成唯一? 原本我们是想使用分布式锁的方案,但是经过 Jmeter 压测后发现,该吞吐量不太理想。

后来,我们采用了布隆过滤器 + 数据库唯一索引兜底的方案,保证了短链接的唯一性。

并且,经过压测数据对比,发现布隆过滤器 + 数据库唯一索引的方案是分布式锁性能的6倍。

题目:基于哈希算法构建的高性能安全短链接生成与解析WEB管理系统

选题背景: 随着互联网科技的普及和深化应用,短链接服务已在社交媒体互动、邮件营销策略、广告活动推广等多种渠道中占据核心地位,成为信息流通的重要桥梁。为了助力企业和广告主更精确地追踪用户点击行为、优化营销效果,开发一款融合高效短链接生成与云端安全存储技术的WEB管理系统显得尤为必要。该系统将巧妙运用密码学理论,不仅实现简洁独特、难于预测的短链接生成,还要确保用户访问记录数据加密存储且防篡改,展现密码学在现实商业场景中的创新应用价值。

要求:

  1. 结合MurmurHash算法与高级别随机数生成技术,精心设计并实现短链接生成子系统,确保生成的短链接在保持高度唯一性和简洁性的同时,外部攻击者难以预测其生成规则。
  2. 引入AES对称加密算法,对包括但不限于设备类型、点击来源、IP地址在内的用户访问记录进行全面加密处理,确保隐私数据得到严密保护。
  3. 在短链接跳转逻辑中,植入基于哈希算法的布隆过滤器,有效验证短链接的存在性,从而有效抵抗恶意用户通过大规模无效链接发起的缓存穿透攻击,显著缓解数据库承载压力。
  4. 配置HS256数字签名算法,为每位管理员用户发放带有签名的Token,以此对访问权限进行精细管控,确保只有获得授权的用户方可查看短链接访问统计数据,以加强数据安全防护。
  5. 构建简洁美观且易于操作的用户界面,让用户能够一键式生成与解析短链接,并借助可视化图表生动展示短链接的访问统计概况。
  6. 在整个系统设计与开发过程中,秉持性能优化与安全性双重视角,确保系统即便在高并发访问条件下,仍能保持出色的短链接生成与解析速度,全面提升系统的运行效率与安全性水平。

About

密码学课程设计

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published