1.高并发短链系统介绍
1.高并发短链系统介绍
前言
前几天,我在星球中发起了一个星球新项目的投票,目前排名前二的是:复杂AI项目和高并发短链系统。
咱们先把高并发短链系统做了,这个系统花不了太多的时间,争取让大家可以写到9、10月份的求职简历中。
这个新项目会使用目前业界最新的技术,比如:JDK21、SpringBoot3.5.3等。
短链系统并发量非常高,会使用分库分表、熔断、限流、布隆过滤器、负载均衡、集群等很多高并发的技术。
1. 什么是 URL 短链?
URL 短链,就是把原来较长的网址,转换成比较短的网址。
我们可以在短信和微博里可以经常看到短链的身影。
如下图,我随便找了某一天躺在我短信收件箱里的短信。

上图所示短信中,https://j.mp/38Zx5XC,就是一条短链。用户点击蓝色的短链,就可以在浏览器中看到它对应的原网址:

那么为什么要做这样的转换呢?来看看短链带来的好处:
在微博,Twitter 这些限制字数的应用中,短链带来的好处不言而喻: 网址短、美观、便于发布、传播,可以写更多有意义的文字;
在短信中,如果含长网址的短信内容超过 70 字,就会被拆成两条发送,而用短链则可能一条短信就搞定,如果短信量大也可以省下不少钱;
我们平常看到的二维码,本质上也是一串 URL,如果是长链,对应的二维码会密密麻麻,扫码的时候机器很难识别,而短链则不存在这个问题;
处于安全考虑,不想让有意图的人看到原始网址。
2. 短链跳转原理
客户端(或浏览器)请求短链:https://j.mp/38Zx5XC
短链服务器收到请求后,返回 status code: 301 或 302,说明需要跳转,同时也通过 location 字段告知客户端:你要访问的其实是下面这个长网址:https://activity.icoolread.com/act7/212/duanxin/index
客户端收到短链服务器的应答后,再去访问长网址:https://activity.icoolread.com/act7/212/duanxin/index

实际浏览器中的网络请求如下图:

3 使用技术
短链系统我们设计的是一个能够支持100万QPS的系统,需要使用很多高并发的技术。
如果你仔细研究一下,会发现目前星球中每个项目,使用的技术都有些差异,这是为了让球友们,通过不同的项目学习到不同的技术,能够学到更多的东西。
开发语言:Java21
数据库:MySQL8
框架:SpringBoot3.5.3+JPA
缓存:Redis+Caffine
消息中间件:Sentinel+Shardingsphere+Prometheus
请求转发:Nginx
当然还可能用点其他的技术,比如布隆过滤器、优化后的分段发号器、短链映射算法、解决缓存击穿问题、连接池优化等。
后面还有很多非常有意思的功能,敬请期待。