📽️如何构建一个短链系统

type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
 
典型读多写少的场景,需要考虑高并发的读取的场景。所以缓存和恶意请求需要处理得当。
notion image

对于长链接转短链接的场景

参数校验

  1. 判断长链接能够访问通
  1. 判断长链接不是一个短链接(防止循环转链)

构造链接

  1. 发号器发号(可以是redis的string、mysql的主键或雪花算法生成的id),给这个长链接对应的一个编号
  1. 用base62转码为62进制的数字来标识这个数字,得到一个字符串(这时可以按照需求处理,黑名单设置、敏感词过滤)

数据存储

  1. 加入bloomFilter
  1. 长链接和短链接的对应关系存入db、cache
 

对于短链接读取长链接的场景

  1. 先从过滤器中过滤恶意请求
  1. 从redis获取相应的数据
  1. 可以将访问信息写入kafka中,后期大数据团队也可以去离线或在线消费这些数据
  1. 若redis中没有,从db中获取,redis中存入这个短链接对应长链接的关系
  1. 服务器302重定向到对应的网页
 

ref

 
Prev
calico
Next
版本控制规范
Loading...
Article List