📽️如何构建一个短链系统
type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
典型读多写少的场景,需要考虑高并发的读取的场景。所以缓存和恶意请求需要处理得当。

对于长链接转短链接的场景
参数校验
- 判断长链接能够访问通
- 判断长链接不是一个短链接(防止循环转链)
构造链接
- 发号器发号(可以是redis的string、mysql的主键或雪花算法生成的id),给这个长链接对应的一个编号
- 用base62转码为62进制的数字来标识这个数字,得到一个字符串(这时可以按照需求处理,黑名单设置、敏感词过滤)
数据存储
- 加入bloomFilter
- 长链接和短链接的对应关系存入db、cache
对于短链接读取长链接的场景
- 先从过滤器中过滤恶意请求
- 从redis获取相应的数据
- 可以将访问信息写入kafka中,后期大数据团队也可以去离线或在线消费这些数据
- 若redis中没有,从db中获取,redis中存入这个短链接对应长链接的关系
- 服务器302重定向到对应的网页
ref
demo repo 地址 https://github.com/Forrest-Tao/URLConverting
Prev
calico
Next
版本控制规范
Loading...