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

简介: 如何提高响应速度,和直接打开原链接一样的效率。明确,这是个读多写少业务。

4 Scale


如何提高响应速度,和直接打开原链接一样的效率。


明确,这是个读多写少业务。


4.1 缓存提速(Cache Aside)

缓存需存储两类数据:


long2short(生成新 short url 需要)

short2long(查询 short url 时需要)

7.png


4.2 CDN


利用地理位置信息提速。


优化服务器访问速度:


不同地区,使用通不同 web 服务器

通过 dns 解析不同地区用户到不同服务器

优化数据访问速度


使用中心化的 MySQL+分布式的 Redis

一个 MySQL 配多个 Redis,Redis 跨地区分布

6.png


4.3 何时需要多台 DB 服务器


cache 资源不够或命中率低


写操作过多


越来越多请求无法通过 cache 满足


多台DB服务器可以优化什么?


解决存不下:存储

解决忙不过:qps

那么 tiny url 的主要问题是啥?存储是没问题的,重点是 qps。那么,如何 sharding 呢?


垂直拆分:将多张表分别分配给多台机器。对此不适用,只有两列,无法再拆分。


横向拆分:


若id、shortURL 做分片键:


long2short 查询时,只能广播给 N 台 db 都去查询

为何要查 long2short?避免重复创建呀

若不需要避免重复创建,则这样可行

用 long url 做分片键:


short2long 查询时,只能广播给 N 台 DB 查询。

目录
相关文章
|
12天前
|
存储 缓存 算法
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能
151 0
|
8月前
|
存储 缓存 NoSQL
数据库性能优化中的缓存优化
数据库性能优化中的缓存优化
|
12天前
|
存储 缓存 自然语言处理
深入PHP内核:理解Opcode缓存与性能优化
【5月更文挑战第14天】 在动态语言的世界里,PHP一直因其高性能的执行效率和广泛的社区支持而备受青睐。随着Web应用的复杂性增加,对性能的要求也越来越高。本文将探讨PHP的Opcode缓存机制,解析其对性能提升的贡献,并展示如何通过配置和使用不同的Opcode缓存方案来进一步优化PHP应用的性能。我们将深入到PHP的核心,了解Opcode是如何生成的,以及它如何影响最终的执行效率。
|
9月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
144 0
|
12天前
|
存储 缓存 NoSQL
Redis缓存设计与性能优化(一)
Redis缓存设计与性能优化(一)
|
12天前
|
存储 缓存 NoSQL
Redis--缓存设计与性能优化
Redis--缓存设计与性能优化
|
12天前
|
缓存 NoSQL 算法
Redis专题(持续更新) 04-VIP-Redis缓存设计与性能优化
maxIdle实际上才是业务需要的最大连接数,maxTotal是为了给出余量,所以maxIdle不要设置。些redis连接,执行简单命令,类似ping(),快速的将连接池里的空闲连接提升到minIdle的数。redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还。如果系统启动完马上就会有很多的请求过来,那么可以给redis连接池做预热,比如快速的创建一。数",在使用连接的过程中,如果连接数超过了minIdle,那么继续建立连接,如果超过了。
|
12天前
|
存储 缓存 NoSQL
Redis专题(持续更新) 04-VIP-Redis缓存设计与性能优化
对于恶意攻击,向服务器请求大量不存在的数据造成的缓存穿透,还可以用布隆过滤器先做一次过滤,对于不存在的数据布隆过滤器一般都能够过滤掉,不让请求再往后端发送。缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。向布隆过滤器询问 key 是否存在时,跟 add 一样,也会把 hash 的几个位置都算出来,看看位数组中这几个位。发过来,缓存层支撑不住,或者由于缓存设计不好,类似大量请求访问bigkey,导致缓存能支撑的并发急剧下。
148 3
|
8月前
|
存储 缓存 应用服务中间件
|
9月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(二)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(二)
150 0