# sls **Repository Path**: sweeter-open/sls ## Basic Information - **Project Name**: sls - **Description**: 一个简单的短链(短网址)生成服务 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-06-20 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: 短网址, 短链, SpringBoot, webflux ## README # 短链系统 > 简单的实现一个短链系统

logo

## 环境 - java 1.8 - springboot 2.5.0 - netty - webflux - redis - mysql/oracle ## URL短链介绍 #### 各大互联网公司的短链(从短信中取得) - 京东 ```text 3.cn/-1f2fQae ``` - 淘宝 ```text https://s.tb.cn/C.10Oafv hm.tb.cn/x.Vi3bx5 ``` - 哔哩哔哩 ```text https://b23.tv/lVkf3F ``` - 百度 ```text https://dwz.cn/NQhVSUM2 ``` - 哈罗单车 ```text https://h.c3x.me/1086mE ``` - 网易云 ```text http://163.lu/cwGFX2 ``` - 中国联通 ```text https://u.10010.cn/qA8MI ``` - 中国电信 ```text http://suo.im/5IGDLX ``` - 小米 ```text https://s.mi.cn/_xUsz6 ``` - 观察结论 - 域名越短越好,京东3.cn无疑是最优秀的 - 短链中带有.-_特殊字符 - 短信中网址使用http协议时,可以省略http://的协议头部分,缩短字符 #### 优点 - 美观、满足字数限制(如短信营销) - 字符少节约短信推广成本 - 易于传播分享,避免复制时丢失链接字符 - 二维码简化,降低二维码复杂程度,减少二维码像素,提升识别速度及成功率 - 便于分析,所有访问都通过短链系统重定向 ## 设计中注意事项 - 避免和短链系统自身的url冲突 - 长链与短链映射关系不可逆 - 服务高可用,可动态水平扩展 ## 知识点 - 域名越短越好 - 301 是永久重定向,302 是临时重定向 ## 设计简述 - 设计灵感来源于知乎问题 [短 URL 系统是怎么设计的?](https://www.zhihu.com/question/29270034/answer/46446911)下@iammutex 的回答 - 1.使用发号策略,设计一个发号器,给每个长链发一个十进制编号 - 2.对发号器进行分组,可以把多个发号器分为一组,也可以一个发号器为一组,每个发号器组分配一个十进制id - 3.发号器组id的62编码+"."+编号的62进制编码组成一个短链,如:1c.AbC1,看起来非常像阿里的短链是不是?:smile: ## 打包部署 - 配置文件、jar包分离打包 ```text mvn clean package ``` - 启动服务 - window: ```text server.bat ``` - linux ```shell script sh server.sh start ``` ## 如何使用 - 体验地址: ## License