预先生成一批不会重复的短URL字符串,当外部请求输入长URL获取短URL时,直接从预先生成好的短URL字符串池中获取一个即可。
预生成短URL的算法采用随机数来实现,6个字符,每个字符使用随机数生成(0-63,再取对应的Base64编码字符)。避免冲突,预生成时使用布隆过滤器检查是否存在。
服务启动预先从数据库加载1000个短URL到LinkedBlockingQueue,每使用一个短URL出队一个。单独的线程监控队列长度,当队列长度不足200时,从数据库中加载1000个短URL到队列尾部。
-
预生成URL布隆过滤器内容持久化 - 引入Redis布隆过滤器
- 引入Kafka,预生成URL异步多线程入库
-
生成游标记录本次已使用到的短URL主键Id - 增加内存缓存caffeine,缓存热点数据
- 支持用户自定义短URL
- Github Action + Docker自动构建部署
- 分库分表 (笔记:https://imokkkk.github.io/fenkufenbiaon/)
- WebFlux整合Resilience4j实现并发控制(resilience4j分支)
- SpringCloud Config实现动态更新Resilience4j配置(resilience4j分支)
- Redis Spring API监控指标注册到MeterRegistry
部署运行服务,访问 http://127.0.0.1:6324/index.html
长链接转换短链接