缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走( 三 )

  • 按天算
    假设某个信息分类网站首页日均PV约8000w那平均QPS为: 一天按照4W秒算(晚上不计算),8000w/4w= 2000,大概2000QPS 。
  • 注:
    用户不会全天都使用软件,一般晚上不会使用或者使用人很少 。但也分业务,你像直播、外卖等 。但一天12小时基本上满足一个用户当天最大使用软件的时间 。
    具体用户在线使用App的时间也不确定,具体应该根据自身项目统计用户的使用时间和总流量来计算平均QPS 。利用高峰期流量来计算最大QPS 。
    对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数 。
    缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

    文章插图
     
    无并发的应用都是单机应用,对于互联网或者移动互联网上的产品而言 。
    并发用户数并发用户数是指系统可以同时承载的正常使用系统功能的用户数量,值越大,那处理能力就越强 。
    资源利用率反映的是在一段时间内资源平均被占用的情况 。
    从浏览器--->网络--->应用服务器--->数据库,通过在各个层面应用缓存技术,将大幅提高提升整个系统的性能 。
    例如:缓存离客户端更近,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,系统就显得更灵敏 。缓存数据的重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护 。
    所以,使用 缓存技术,可以降低系统的响应时间,减少网络传输时间和应用延迟时间,进而提高了系统的吞吐量,增加了系统的并发用户数
    利用缓存还可以最小化系统的工作量,使用了缓存就可以不必反复从数据源中查找,缓存所创建或提供的同一条数据更好地利用了系统的资源 。
     
    因此,缓存是系统调优时常用且行之有效的手段,无论是操作系统还是应用系统,缓存策略无处不在 。“缓存为王”本质上是系统性能为王,对用户而言就是用户体验为王 。
    网站架构缓存演进起步最初的网站可能就是一台物理主机,放在IDC或者租用的是云服务器,上面只运行着 应用服务器和数据库,LAMP(linux Apache MySQL PHP)就是这样流行起来的 。
    缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

    文章插图
    单体架构
    发展由于网站具备一定的特色,吸引了部分用户的访问,逐渐会发现系统的压力越来越大,响应速度越来越慢,而这个时候比较明显的往往是 数据库与应用 的互相影响,于是将应用服务器和数据库服务器从物理上分离开来,变成了两台机器 。让其不再互相影响,来支撑更高的流量 。
    缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

    文章插图
     
    中期随着访问网站的人数越来越多,响应速度又开始变慢了,可能是 访问数据库的操作太多,导致数据连接竞争激烈,因此缓存开始登场 。
    这里不难看出,数据库往往是考虑优化的首选,毕竟没缓存请求直连数据库,而数据库又是数据的集中地,查数据还会涉及磁盘I/O 。压力可想而知
    若想通过缓存机制来减少数据库连接资源的竞争和对数据库读的压力,那么可如下选择:
    • 静态页面缓存: 这样程序上可以不做修改,就能够很好地减少对Web服务器的压力以及减少对数据库连接资源的竞争 。
    • 动态缓存: 将动态页面里相对静态的部分也缓存起来,因此考虑采用类似的页面片段缓存策略(通过nginx、Apache配置实现动态缓存) 。
    静态缓存更倾向于静态资源的缓存和浏览器的缓存 。动态缓存是通过页面访问后,再编译生成缓存文件,提供给后续请求访问 。有点像模板引擎
    缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

    文章插图
     
    那我数据库写呢?
    此刻流量上升,主要针对访问,写请求也会上升,但性能瓶颈在于数据库的读操作上 。可以说写还构不成太大的威胁 。如果写不够,那只能扩容多个实例来应对写的不足 。
    高速增长期
    随着访问量的持续增加,系统又开始变慢,怎么办?
    使用 数据缓存,将系统中重复获取的数据信息从数据库加载到本地,同时降低了数据库的负载 。随着系统访问量的再度增加,应用服务器又扛不住了,就开始增加Web服务器 。


    推荐阅读