短链系统设计性能优化-缓存提速及CDN

Posted JavaEdge.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了短链系统设计性能优化-缓存提速及CDN相关的知识,希望对你有一定的参考价值。

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 查询。

以上是关于短链系统设计性能优化-缓存提速及CDN的主要内容,如果未能解决你的问题,请参考以下文章

短链系统设计性能优化-分片策略优化

短链系统设计-场景需求及性能要求分析

字节二面:100Wqps短链系统,如何设计?

字节二面:100Wqps短链系统,如何设计?

从优化性能到应对峰值流量:微博缓存服务化的设计与实践

如何生成高性能的短链接?