# urlLongToShort **Repository Path**: pushaftercommit/url-long-to-short ## Basic Information - **Project Name**: urlLongToShort - **Description**: 一个极度简单的长链接转短链接服务 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-06-08 - **Last Updated**: 2025-01-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一个极度简单的长链接转短链接服务 #### 介绍 支持上百亿记录存储,应该没问题 支持短链超时过期机制 webflux响应式框架,超高的并发性能 一键部署,一台服务器或者一个容器环境和一个数据库即可 #### 软件架构 mysql+java+springboot+webflux+mybatisplus #### 部署参数说明 * MYSQL_HOST mysql连接地址 * MYSQL_PORT mysql端口 * MYSQL_DB_NAME mysql数据库库名 * MYSQL_USER mysql数据库用户名 * MYSQL_PWD mysql数据库密码 * DOMAIN_HOST 短链接服务的主域名 #### docker部署 ````txt docker run --name production -p 9080:9080 -e MYSQL_HOST= -e MYSQL_PORT= -e MYSQL_DB_NAME= -e MYSQL_USER= -e MYSQL_PWD= -e DOMAIN_HOST= -d 17849982282/short_url_production:release_2.0 docker run --name server -p 9090:9090 -e MYSQL_HOST= -e MYSQL_PORT= -e MYSQL_DB_NAME= -e MYSQL_USER= -e MYSQL_PWD= -d 17849982282/short_url_server:release_2.0 ```` #### 源码编译 1. 下载代码 2. 创建数据库 3. 分别修改short_production和short_server下的yaml配置,参数说明 5. 打包代码 ````shell #进入代码目录 cd url-long-to-short/ #打包代码 mvn clean -DskipTests=true package #进入short_production target目录启动服务器 cd short_server/target/ java -jar server.jar #short_server target目录启动服务器 cd short_server/target/ java -jar production.jar ```` 5. 配置server服务nginx方向代理 ````tex location / { proxy_pass http://127.0.0.1:9090/;#short_server服务的端口 } ```` #### 使用教程 1. 调用curl服务生成短链接 ````shell #创建永久有效短链 curl -X POST http://127.0.0.1:9080/production -H 'Content-Type: application/json' -d '{"longUrl":"www.baidu.com"}' #以下为返回内容 {"shortUrl":"139.224.60.29:9090/FJsfH"} #创建带过期时间短链 curl -X POST http://127.0.0.1:9080/production -H 'Content-Type: application/json' -d '{"longUrl":"www.baidu.com","expTime":"2023-08-22 11:02:05"}' #创建带过期时间短链 {"shortUrl":"139.224.60.29:9090/LJsfH"} ```` 2. 网页输入上面调用生成的短链接地址 #### 如果觉得有用就给颗星吧 #### 使用建议 ````tex short_production服务用于生成短链接,建议放在内网中使用 short_server服务用于短链跳长链,建议使用网关(如nginx)暴露到公网 short_production与short_server均支持部署多个实例并放置于负载均衡之后以水平提升服务性能 short_production和short_server均使用webflux响应式编程模型,并发性能出众,个人仅在阿里云使用共享性1C2G服务器且与mysql共享资源环境做过压测,short_production创建短链接口QTS可达500/秒,且响应时间最长不超过2.5s short_server启用缓存机制,理论上性能远超short_production ```` #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)