# 短链接 **Repository Path**: luoshizhen0621/shortlink ## Basic Information - **Project Name**: 短链接 - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-01 - **Last Updated**: 2025-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔗 高性能短链接系统 ## 📋 项目概述 一个基于微服务架构的高性能短链接系统,支持**千万级并发**访问和**海量数据存储**。项目采用前后端分离架构,具备完整的用户管理、链接管理、数据统计和监控功能。 ## 🏗️ 核心技术架构 ### 微服务架构设计 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Gateway │ │ Admin Service │ │ Project Service│ │ 网关服务 │ │ 管理后台服务 │ │ 短链接核心服务 │ │ - 路由转发 │ │ - 用户管理 │ │ - 链接生成 │ │ - 流量控制 │ │ - 分组管理 │ │ - 链接跳转 │ │ - 安全认证 │ │ - 权限控制 │ │ - 数据统计 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ └────────────────────────┼────────────────────────┘ │ ┌─────────────────┐ │ Aggregation │ │ 聚合服务 │ │ - 服务编排 │ │ - 统一入口 │ └─────────────────┘ ``` ### 技术栈组合 - **后端**: Spring Boot + Spring Cloud + Nacos + ShardingSphere - **前端**: Vue.js + Element UI + ECharts - **数据库**: MySQL + Redis + RocketMQ - **中间件**: Nacos(服务发现) + Gateway(网关) + MyBatis-Plus ## 🎯 核心技术亮点与难点 ### 1. 🔥 **分库分表设计** (技术难点★★★★★) 采用ShardingSphere实现水平分库分表,支持海量数据存储 **分片策略**: - **用户表**: 按`username`哈希取模分16张表 - **分组表**: 按`username`哈希取模分16张表 - **短链接表**: 按`full_short_url`哈希分片 **核心代码**: ```yaml # 用户表分片配置 t_user: actualDataNodes: ds_0.t_user_${0..15} tableStrategy: standard: shardingColumn: username shardingAlgorithmName: user_table_hash_mod ``` ### 2. 🛡️ **数据安全加密** (技术难点★★★★) 实现数据库敏感信息自动加密存储 **加密字段**: - 用户手机号、邮箱等敏感信息 - 采用AES对称加密算法 - 查询时自动解密,对业务层透明 ```yaml # 加密配置 t_user: columns: phone: cipherColumn: phone encryptorName: common_encryptor ``` ### 3. ⚡ **高并发架构设计** (技术难点★★★★★) **流量控制**: - 基于Redis + Lua脚本实现分布式限流 - 支持按时间窗口控制访问频率 - 防止恶意刷访问量 **缓存策略**: - Redis缓存热点短链接 - 布隆过滤器防止缓存穿透 - 缓存预热提升访问速度 **异步处理**: - MQ异步处理统计数据 - 访问日志异步入库 - 减少用户感知延迟 ### 4. 🎲 **短链接生成算法** (技术难点★★★★) **Base62编码 + 哈希冲突处理**: - 支持自定义短链接 - 雪花算法生成唯一ID - 冲突检测与重试机制 ### 5. 📊 **实时数据统计** (技术难点★★★) **多维度统计**: - 访问量、访问IP、访问设备统计 - 地理位置分析(集成高德地图API) - 时间维度统计(小时、天、周、月) **可视化展示**: - ECharts图表展示 - 实时数据更新 - 数据导出功能 ### 6. 🌐 **安全防护机制** (技术难点★★★★) **多重安全保障**: - 域名白名单防止恶意跳转 - Token认证机制 - 网关层统一鉴权 - SQL注入防护 ```yaml # 域名白名单配置 goto-domain: white-list: enable: true names: '知乎,掘金,博客园' ``` ## 📁 项目模块说明 ### 核心服务模块 - **admin**: 管理后台服务 - 用户管理、分组管理、权限控制 - **project**: 短链接核心服务 - 链接生成、跳转、统计 - **gateway**: 网关服务 - 路由、限流、认证 - **aggregation**: 聚合服务 - 服务编排、统一入口 ### 前端模块 - **console-vue**: Vue管理后台 - 用户界面、数据可视化 ## 🚀 快速启动 ### 环境要求 - JDK 1.8+ - MySQL 8.0+ - Redis 6.0+ - Node.js 14+ - Nacos 2.0+ ### 启动步骤 1. **启动基础服务** ```bash # 启动Nacos sh nacos/bin/startup.sh -m standalone # 启动Redis redis-server ``` 2. **初始化数据库** ```bash # 执行SQL脚本 mysql -u root -p < resources/database/link.sql ``` 3. **启动后端服务** ```bash # 按顺序启动微服务 java -jar gateway/target/gateway.jar java -jar admin/target/admin.jar java -jar project/target/project.jar java -jar aggregation/target/aggregation.jar ``` 4. **启动前端** ```bash cd console-vue npm install npm run dev ``` ## 🔍 项目亮点总结 ### 架构设计亮点 1. **微服务架构**: 高内聚低耦合,易扩展维护 2. **分库分表**: 解决单表数据量过大问题 3. **读写分离**: 提升数据库性能 4. **服务网关**: 统一入口,流量控制 ### 技术实现亮点 1. **分布式限流**: Redis + Lua脚本实现 2. **数据加密**: 透明化敏感数据保护 3. **异步处理**: MQ解耦提升性能 4. **缓存策略**: 多级缓存设计 ### 业务功能亮点 1. **自定义短链**: 支持个性化定制 2. **数据统计**: 多维度实时分析 3. **批量操作**: 提升运营效率 4. **回收站**: 误删数据恢复