热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cacheisking(1)

目录cacheisking张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师笔者微信:zhanghe15069028807,现居济南历下区,i

目录



  • cache is king


=======================================================================

张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师

笔者微信:zhanghe15069028807,现居济南历下区

=======================================================================



cache is king

在IT领域当两个部件速度上衔接不好时就会使用缓存,比如



  1. 硬盘和内存之间的加了固态硬盘,

  2. 在内存和CPU之前加了一级、二级、三级缓存

  3. 在负载均衡和web集群之间加缓存varnish

  4. 在web集群和数据库之间加memcache或是redis

  5. 客户端和网站之间加了CDN

缓存的根本原理

缓存是根据什么来提升网站的速度的呢?任何缓存的本质其实都差不多,都是根据数据的局部性来进行预加载,使得客户端请求在缓存上就实现命中,无需再向后端请求。

程序运行具有局部性特性:



  • 时间局部性:一个数据被访问之后,可能会很快被再次访问。


  • 空间局部性:一个数据被访问时,其周边的数据也有可能被访问到。


加上缓存之后能立刻提升网站的速度吗

缓存不会立刻提升访问速度,因为我们无法预判断用户会访问哪些热点数据,通常只有当用户访问了一段时间之后,缓存算法加载一些页面到缓存,缓存的页面被不断命中之后,网站的访问速度再来有所提升。为了能够让缓存上线后能立刻能够使用,有时候需要“缓存热身”,就是用压力测试先压一下,让缓冲当中有数据,再开放到用户访问。

缓存中的数据会一直生效吗

有两种情况下缓存会失效,如下:



  1. 当缓存空间快要用光的时候,这个时候会触发一个缓存的清理算法(LRU最近最少访问访问算法)

  2. 缓存也是有时效性的,时效是我们自己设置的,就像是DHCP当中的ACK报文当中的时效类似,这种失效是有必要的,比如我们后端的源数据有了变化,要保证用户访问的数据是最新的,如果前端缓存一直不失效,那用词岂不是一直无法访问到最新的页面。

如何评价缓存的有效性呢



  1. 页面命中率,也就是命中页面的数量,当时是越多越好。


  2. 字节命中率,字节命中率就是命中的字节,当然是命中的字节越多越好。


公有缓存和私有缓存?

公有缓存就是所有的用户都可以使用的,而私有缓存就是用户私人的。

我们做为运维人员管理缓存时的一个重要任务就是区别哪些是公有缓存,哪些是私有缓存,如果有些明明是公有缓存的内容却被私有访问了,那我们就要移除其私有标识,将其更改为公有缓存。

缓存仅仅只是缓存吗

http协议的缓存要先是一个代理,其次才是一个缓存,典型代表就是nginx和varnish。

还又另一种缓存,就仅仅是缓存,并不充当代理,典型代表就是memcache和reis。

缓存的部署方式



  1. 代理缓存,收到请求之后,如果没命中,缓存自己先去找后端服务器,找到结果之后再通过缓存返回到客户端。


  2. 旁挂缓存,命中缓存就返加,没命中的话让客户端自己去找,客户端决定是否缓存,要求智能客户端,好的产品要把用户当傻瓜的,所以不推荐这种部署方式。


varnish是什么?是用来做什么的?

varnish可以实现负载均、代理、缓存,最厉害的还是缓存,通常varnish都是和nginx配合起来使用。

使用nginx专门来做负载均衡和web,使用varnish专门用来做缓存。

中型企业典型架构


如果负载均衡是nginx的话,最好使用一致性hash uil,以免缓存服务器变动导致雪崩效应。


有同学问我说,怎么缓存还要连接动态集群呢?是因为“静态图片”那组服务器只是存储图片,像是css、js这种文件,不会存放到“静态图片”组服务器上,也需要http缓存当代理去动态WEB集群上去取,然后才能做缓存的。



推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • document .ready中的函数怎么被按钮调用? ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
author-avatar
asfasfdsfd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有