1 Star 1 Fork 0

sweeter / sls

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.35 KB
一键复制 编辑 原始数据 按行查看 历史
sweeter 提交于 2021-07-10 18:13 . 打包配置

短链系统

简单的实现一个短链系统

logo

环境

  • java 1.8
  • springboot 2.5.0
  • netty
  • webflux
  • redis
  • mysql/oracle

URL短链介绍

各大互联网公司的短链(从短信中取得)

  • 京东

    3.cn/-1f2fQae
  • 淘宝

    https://s.tb.cn/C.10Oafv
    hm.tb.cn/x.Vi3bx5
  • 哔哩哔哩

    https://b23.tv/lVkf3F
  • 百度

    https://dwz.cn/NQhVSUM2
  • 哈罗单车

    https://h.c3x.me/1086mE
    
  • 网易云

    http://163.lu/cwGFX2
  • 中国联通

    https://u.10010.cn/qA8MI
  • 中国电信

    http://suo.im/5IGDLX
  • 小米

    https://s.mi.cn/_xUsz6
  • 观察结论

优点

  • 美观、满足字数限制(如短信营销)
  • 字符少节约短信推广成本
  • 易于传播分享,避免复制时丢失链接字符
  • 二维码简化,降低二维码复杂程度,减少二维码像素,提升识别速度及成功率
  • 便于分析,所有访问都通过短链系统重定向

设计中注意事项

  • 避免和短链系统自身的url冲突
  • 长链与短链映射关系不可逆
  • 服务高可用,可动态水平扩展

知识点

  • 域名越短越好
  • 301 是永久重定向,302 是临时重定向

设计简述

  • 设计灵感来源于知乎问题 短 URL 系统是怎么设计的?下@iammutex 的回答
  • 1.使用发号策略,设计一个发号器,给每个长链发一个十进制编号
  • 2.对发号器进行分组,可以把多个发号器分为一组,也可以一个发号器为一组,每个发号器组分配一个十进制id
  • 3.发号器组id的62编码+"."+编号的62进制编码组成一个短链,如:1c.AbC1,看起来非常像阿里的短链是不是?:smile:

打包部署

  • 配置文件、jar包分离打包
mvn clean package
  • 启动服务
    • window:
     server.bat
    • linux
     sh server.sh start

如何使用

  • 体验地址:

License

1
https://gitee.com/sweeter-open/sls.git
git@gitee.com:sweeter-open/sls.git
sweeter-open
sls
sls
master

搜索帮助