4 Scale
如何提高响应速度,和直接打开原链接一样的效率。
明确,这是个读多写少业务。
4.1 缓存提速(Cache Aside)
缓存需存储两类数据:
- long2short(生成新 short url 需要)
- short2long(查询 short url 时需要)
4.2 CDN
利用地理位置信息提速。
优化服务器访问速度:
- 不同地区,使用通不同 web 服务器
- 通过 dns 解析不同地区用户到不同服务器
优化数据访问速度
- 使用中心化的 MySQL 分布式的 Redis
- 一个 MySQL 配多个 Redis,Redis 跨地区分布
4.3 何时需要多台 DB 服务器
cache 资源不够或命中率低
写操作过多
越来越多请求无法通过 cache 满足
多台DB服务器可以优化什么?
- 解决存不下:存储
- 解决忙不过:qps
那么 tiny url 的主要问题是啥?存储是没问题的,重点是 qps。那么,如何 sharding 呢?
垂直拆分:将多张表分别分配给多台机器。对此不适用,只有两列,无法再拆分。
横向拆分:
若id、shortURL 做分片键:
- long2short 查询时,只能广播给 N 台 db 都去查询
- 为何要查 long2short?避免重复创建呀
- 若不需要避免重复创建,则这样可行
用 long url 做分片键:
short2long 查询时,只能广播给 N 台 DB 查询。