# link **Repository Path**: muyu1008/link ## Basic Information - **Project Name**: link - **Description**: 创建短链接:将生成的唯一标识符加上短链接服务的域名(例如:http://nurl.ink/)作为前缀,构成一个短链接。 重定向:当用户访问该短链接时,短链接服务接收到请求后会根据唯一标识符查找关联的长 URL,然后将用户重定向到这个长 URL。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-27 - **Last Updated**: 2025-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # link #### 基本流程介绍 生成唯一标识符:当用户输入或提交一个长 URL 时,短链接服务会生成一个唯一的标识符或者短码。 将标识符与长 URL 关联:短链接服务将这个唯一标识符与用户提供的长 URL 关联起来,并将其保存在数据库或者其他持久化存储中。 创建短链接:将生成的唯一标识符加上短链接服务的域名(例如:http://nurl.ink/)作为前缀,构成一个短链接。 重定向:当用户访问该短链接时,短链接服务接收到请求后会根据唯一标识符查找关联的长 URL,然后将用户重定向到这个长 URL。 跟踪统计:一些短链接服务还会提供访问统计和分析功能,记录访问量、来源、地理位置等信息。 #### 软件架构 SpringBoot + SpringCloudAlibaba + RocketMQ + ShardingSphere + Redis + MySQL + Sentinel #### 基本功能 通过布隆过滤器完成判断短链接是否已存在,性能远胜分布式锁搭配查询数据库方案。 使用 RocketMQ 消息队列“削峰”特点,完成大量访问短链接场景下的监控信息存储功能。 封装缓存不存在读取功能,通过双重判定锁优化更新或失效场景下大量查询数据库问题。 通过更新数据库删除缓存策略,保障短链接缓存与数据库之间的数据一致性功能。 通过 Redis 完成消息队列消费业务下的幂等场景,保障消息在一定时间内消费且仅消费一次。 使用 Redisson 分布式读写锁功能,完成短链接在大量访问场景下的数据修改功能。 为了兼容短链接后管用户分页查看短链接功能,在短链接数据分片的基础上增加路由表完成跳转功能。 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 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/)