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相关推荐

  1. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 目录 WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 概述 HTTP解析 HTTP请求头 HTTP响应头 H ...

  2. 100Wqps短链系统,怎么设计?

    这段时间,在整理知识星球中面试专栏时看到这么一个字节跳动的二面真题:100Wqps短链系统,怎么设计? 这道题,看上去业务简单,其实,覆盖的知识点非常多: 高并发.高性能分布式 ID Redis Bl ...

  3. java系统优化方案_Java秒杀系统方案优化 高性能高并发实战-一号门

    类别: 视频 语言: Java 发布日期: 2019-03-02 介绍:以"秒杀"这一Java高性能高并发的试金石场景为例,带你通过一系列系统级优化,学会应对高并发. 第1章 课程 ...

  4. 【在线网课】Java高性能高并发秒杀系统方案优化实战

    java教程视频讲座简介: Java高性能高并发秒杀系统方案优化实战 Java秒杀系统方案优化 高性能高并发实战 以"秒杀"这一Java高性能高并发的试金石场景为例,带你通过一系列 ...

  5. 如何设计一个高性能短链系统?

    目录 前言 短链有啥好处,用长链不香吗 短链跳转的基本原理 短链生成的几种方法 1.哈希算法 如何缩短域名 如何解决哈希冲突的问题? 2.自增序列算法 高性能短链的架构设计 总结 前言 今天,我们来谈 ...

  6. 面试官让我利用哈希算法、布隆过滤器设计一个短链系统

    点击上方蓝字设为星标 下面开始今天的学习- 作者 | 码海 来源 | 码海 前言 今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合 ...

  7. 如何从系统层面优化深度学习计算?

    编者按:在图像.语音识别.自然语言处理.强化学习等许多技术领域中,深度学习已经被证明是非常有效的,并且在某些问题上已经达到甚至超越了人类的水平.然而,深度学习对于计算能力有着很大的依赖,除了改变模型和 ...

  8. 20万用户同时访问一个热点Key,如何优化缓存架构?

    来源:石杉的架构笔记(ID:shishan100) 这篇文章,咱们来聊聊热点缓存的架构优化问题.使用缓存集群的时候,最怕的就是热 Key.大 Value 这两种情况. 一.为什么要用缓存集群 啥叫热 ...

  9. 嵌入式linux+io+优化,嵌入式Linux系统内存优化使用方法研究

    [摘要] 嵌入式系统功能的提高,占用了较大内存空间,继而时常出现运行无响应.基于用户方面看,由于系统内存问题影响运行,针对系统内存与进程应用状态研究,可以调整系统数值与执行文件elf分析,进行系统优化 ...

最新文章

  1. 扬帆起航 继续前行1 nginx+lua+template+cache
  2. servlet之servletResponse
  3. 全球及中国多非利特原料药行业发展模式分析及投资前景规划报告2022-2027年版
  4. iframe标签 父子页面传值
  5. C++学习——默认构造函数
  6. 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)...
  7. matlab练习程序(图像序列合成视频)
  8. windows,linux桌面系统管理
  9. deeplearning.ai——构建一个LR分类器来识别猫
  10. java调用hownet--jni
  11. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(4):验证代码并编写自己的device
  12. 史上最大DDoS攻击”之争”
  13. Type-C PD充电简介
  14. iphone之Info.plist的属性
  15. iCheck的使用示例
  16. jQuery_删除及清空节点
  17. Java - 关于HashMap通过keySet遍历kv的二次调用问题
  18. 【FPGA】【入门基础】一、FPGA实现跑马灯
  19. 女生神经末梢最多的部位,女性身上哪里神经最多
  20. C# 练习ListBox控件用法。

热门文章

  1. 39岁阿里P9失业了,总资产1.5亿,真相是什么?
  2. 数据库“xxx”的事务日志已满,原因为“LOG_BACKUP”
  3. Android之 颜色选择器
  4. 【网络协议趣谈】HTTPS协议加密证书和工作模式
  5. pdf怎么转换成jpg图片?转换方式说明
  6. MOOC南京大学操作系统第五次单元测验
  7. 【GUI界面】基于Python的WSG84三点定位系统(经纬度坐标与平面坐标转换法求解)
  8. LeetCode 870. 优势洗牌(田忌赛马问题)
  9. 【随机区组设计和析因设计的区别】
  10. wxpython查询功能_wxpython程序基本功能源码整理,包括基本文字,输入框,字体设置,按钮绑定事件触发...