# 基于Spring Boot的高性能短链接服务EZLink
![EZLink Architecture](./Architecture.png)
## 项目概述
EZLink是一个高性能的短链接服务,集成了短链接生成、重定向、访问统计和分析功能。项目采用领域驱动设计(DDD),结合Spring WebFlux实现响应式编程,利用雪花算法生成唯一压缩码,通过分布式锁确保数据一致性,并使用责任链模式处理请求。
## 技术栈
1. **领域驱动设计(Domain Driven Design)**
2. **Reactor模型:Spring WebFlux**
3. **雪花算法**
4. **分布式锁**
5. **责任链模式**
6. **TransmittableThreadLocal**
7. **消息队列:Kafka**
8. **定时任务:Spring Scheduled**
9. **缓存:Redis**
10. **布隆过滤器:BloomFilter**
11. **RPC:Dubbo**
## 启动指南
### 端口重置
```bash
net stop winnat
net start winnat
```
### 依赖安装
```bash
docker-compose up -d
```
### 运行应用
```bash
mvn springboot:run
```
## 业务流程
### 业务流程1:长链传入,短链创建
- **长链传入(适配器层)**:接收长链接请求,调用应用层服务创建短链。
- **创建短链流程编排(应用层)**:应用层编排业务流程,调用领域层服务实现短链创建。
- **进行短链创建的实现(领域层)**:领域层实现短链创建逻辑,包括获取可用压缩码、生成短链、保存映射关系和更新缓存。
### 业务流程2:长链重定向
- **获得短链访问请求(适配器层)**:接收短链请求,调用应用层服务进行重定向。
- **执行器(应用层)**:应用层执行器调用领域层服务处理重定向请求。
- **处理上下文(领域层)**:领域层通过责任链模式处理请求,包括提取请求头、短链转换、重定向和记录事件。
### 业务流程3:接口限流
- **实现结果**:全局限流和IP地址限流。
- **实现过程**:使用限流注解和Lua脚本实现Redis限流。
### 业务流程4:Dubbo RPC
- **服务消费者**:通过RPC调用UrlMapService中定义的方法。
### 业务流程5:访问统计
- **定时任务**:使用Spring Scheduled定时处理访问统计数据。
## 项目结构
- **适配器层**:处理HTTP请求、消息队列消费、RPC服务提供和全局异常处理。
- **应用层**:编排业务流程,调用领域层服务。
- **领域层**:实现核心业务逻辑,包括短链生成、重定向处理和访问统计。
- **基础设施层**:提供数据访问、缓存管理和分布式锁等基础设施服务。
## 依赖管理
- **Maven**:管理项目依赖。
- **Docker**:容器化部署依赖服务。
## 测试
- **集成测试**:确保各层服务协同工作。
- **单元测试**:验证单个组件的功能。
## 部署
- **Docker Compose**:一键启动所有依赖服务。
- **Spring Boot**:运行应用。
## 贡献
欢迎贡献代码,提出问题和建议。
## 许可证
MIT License
---
通过EZLink,您可以轻松创建和管理短链接,实现高效的链接重定向和访问统计,提升用户体验和业务效率。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Spring Boot的高性能短链接服务EZLink ![EZLink Architecture](.Architecture.png) 项目概述 EZLink是一个高性能的短链接服务,集成了短链接生成、重定向、访问统计和分析功能。项目采用领域驱动设计(DDD),结合Spring WebFlux实现响应式编程,利用雪花算法生成唯一压缩码,通过分布式锁确保数据一致性,并使用责任链模式处理请求。 技术栈 1. 领域驱动设计(Domain Driven Design) 2. Reactor模型Spring WebFlux 3. 雪花算法 4. 分布式锁 5. 责任链模式 6. TransmittableThreadLocal 7. 消息队列Kafka 8. 定时任务Spring Scheduled 9. 缓存Redis 10. 布隆过滤器BloomFilter 11. RPCDubbo 启动指南 端口重置 bash net stop winnat net start winnat 依赖安装 bash dockercompose up d 运行应用 bash
资源推荐
资源详情
资源评论
收起资源包目录
基于Spring Boot的高性能短链接服务EZLink.zip (131个子文件)
TransformEventRecordExample.java 67KB
VisitStatisticsExample.java 50KB
UrlMapExample.java 35KB
CompressionCodeExample.java 33KB
DomainConfExample.java 32KB
WebFluxServerResponseWriter.java 11KB
UrlMapDomainService.java 10KB
TransformEventRecord.java 8KB
DispatchController.java 8KB
RateLimiterAspect.java 8KB
TransformContext.java 7KB
UserAgentUtils.java 7KB
IpUtils.java 7KB
TransformFilterChainFactory.java 7KB
DispatchQryExe.java 7KB
RedirectionTransformFilter.java 7KB
IpUtils.java 6KB
CompressionCode.java 6KB
DomainConf.java 6KB
TransformEventProcessTransformFilter.java 6KB
UrlTransformFilter.java 6KB
HashSequenceGenerator.java 6KB
UrlMapCacheManager.java 6KB
JavaSnowflakeUtils.java 6KB
VisitStatisticsGatewayImpl.java 5KB
VisitStatisticsDO.java 5KB
VisitStatistics.java 5KB
TransformEventRecordDomainService.java 5KB
VisitStatisticsDomainService.java 5KB
RedisConfig.java 5KB
VisitStatisticsJob.java 5KB
DomainConfMapper.java 5KB
BaseNamingTransformFilter.java 5KB
RedissonAutoConfiguration.java 5KB
TransformEventRecordMapper.java 4KB
SequenceGenerator.java 4KB
ExtractRequestHeaderTransformFilter.java 4KB
CompressionCodeGatewayImpl.java 4KB
CompressionCodeMapper.java 4KB
UrlMap.java 4KB
UrlMapController.java 4KB
TransformEventRecordDO.java 4KB
DefaultTransformFilterChain.java 4KB
TransformEventRecordGatewayImpl.java 4KB
IdSequenceGenerator.java 4KB
HttpGlobalExceptionAdvice.java 4KB
MappedDiagnosticContextFilter.java 4KB
WebFluxConfig.java 4KB
UrlMapMapper.java 4KB
ConversionUtils.java 4KB
VisitStatisticsMapper.java 4KB
RedirectToErrorPageException.java 3KB
UrlMapServiceImpl.java 3KB
RefreshBloomFilterConfig.java 3KB
TransformEventConsumer.java 3KB
TransformEventRecordConvertor.java 3KB
UrlMapDTOAssembler.java 3KB
UrlMapAddCmdExe.java 3KB
CompressionCodeConvertor.java 3KB
VisitStatisticsConvertor.java 3KB
DispatchServiceImpl.java 3KB
RateLimitException.java 3KB
RateLimiter.java 3KB
DistributedLockFactoryTest.java 3KB
UrlMapGatewayImpl.java 3KB
BloomFilterConfig.java 3KB
DomainConfConvertor.java 3KB
VisitStatisticsJobTest.java 3KB
MonoTestController.java 3KB
DomainConfGatewayImpl.java 3KB
DistributedLockFactory.java 3KB
MonoTest.java 2KB
UrlMapDO.java 2KB
DispatchQry.java 2KB
UrlMapConvertor.java 2KB
CompressionCodeDO.java 2KB
VisitStatisticsGateway.java 2KB
LockKeyEnum.java 2KB
CacheKeyEnum.java 2KB
CompressionCodeGateway.java 2KB
UrlMapDTO.java 2KB
TransformFilter.java 2KB
SequenceAndCodeDO.java 2KB
UrlMapAddCmd.java 2KB
MyBatisConfig.java 2KB
TransformEventRecordGateway.java 2KB
Application.java 2KB
UrlMapProvider.java 2KB
DlApplication.java 2KB
DispatchService.java 2KB
LimitType.java 1KB
TransformStatusEnum.java 1KB
CompressionCodeStatusEnum.java 1KB
LongByShortQry.java 1KB
TransformFilterChain.java 1KB
DomainConfGateway.java 1KB
UrlMapService.java 1KB
RPC.java 1KB
UrlValidatorConstant.java 1KB
CustomerEntityTest.java 1KB
共 131 条
- 1
- 2
资源评论
t0_54coder
- 粉丝: 2375
- 资源: 1629
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功