zoukankan      html  css  js  c++  java
  • 006. redis 如何通过读写分离来承载读请求 QPS 超过 10 万 +?

    redis 高并发跟整个系统的高并发之间的关系

    搞高并发的话,不可避免的要把底层的缓存搞得很好,这里就是 redis

    使用 mysql 来支撑高并发的话,就算做到了,那么也是通过一系列复杂的分库分表方案。订单系统中是有事务要求的,QPS 到几万,就已经比较高了,很难提升上去了

    要做一些电商的商品详情页,真正的超高并发,QPS 上十万,甚至是百万,一秒钟百万的请求量

    光是 redis 是不够的,但是 redis 是整个大型的缓存架构中,支撑高并发的架构里面,非常重要的一个环节

    首先,你的底层的缓存中间件,缓存系统,必须能够支撑的起我们说的那种高并发,其次,再经过良好的整体的缓存架构的设计(多级缓存架构、热点缓存),支撑真正的上十万,甚至上百万的高并发

    redis 不能支撑高并发的瓶颈在哪里?

    就是 单机

    单机 redis 一般情况下能够承载的 QPS 上万到几万不等,根据你的业务操作的复杂性,
    redis 提供很多复杂的操作,如 lua 脚本等复杂的操作,那么可能会更低。
    比如就简单的 kv 查询来说还是比较容易达到上万的。

    假设有上千万、上亿的用户来访问,直接就能把你的单机 redis 干死

    如果 redis 要支撑超过 10万+ 的并发,那应该怎么做?

    单机的 redis 几乎不太可能 QPS 超过 10万+,除非一些特殊情况,比如你的机器性能特别好,配置特别高,真实物理机,维护做的特别好,而且你的整体的操作不是太复杂

    单机在一般就几万。要提高并发,一般的方案是 读写分离,一般来说,对缓存,一般都是用来支撑读高并发的,写的请求是比较少的,可能写请求也就一秒钟几千,一两千,大量的请求都是读,一秒钟二十万次读

    也就是 读多写少 的情况下才能用缓存。写多读少可以选择使用异步写,本课程主要讲解缓存

    如上图,一主多从,主负责写,并且将数据同步复制到其他 slave 节点,从节点负责读,还可水平扩展 slave 节点以支撑更多的 QPS

    redis 高并发的思路:redis replication -> 主从架构 -> 读写分离 -> 水平扩容支撑高并发

    参考

    -中华石杉:亿级流量电商详情页系统实战(第二版):缓存架构+高可用服务架构+微服务架构
    -Mrcode笔记本

  • 相关阅读:
    20175126《Java程序设计》第七周学习总结
    20175126《Java程序设计》第六周学习总结
    软工实践个人总结
    第06组 Beta版本演示
    第06组 Beta冲刺(4/5)
    第06组 Beta冲刺(5/5)
    第06组 Beta冲刺(3/5)
    第06组 Beta冲刺(2/5)
    第6组 Beta冲刺(1/5)
    第06组 Alpha事后诸葛亮
  • 原文地址:https://www.cnblogs.com/codecheng99/p/12383460.html
Copyright © 2011-2022 走看看