缓存系统类型

1.页面缓存/pageCache     缓存静态资源(html js css image)  例如:varnish    squid

2.数据缓存/dataCache      缓存应用程序在数据库中查询到的数据结果 例如:redis  memcache

缓存系统一般是key/value类型 缓存只是缓存读请求,写操作不能缓存.在hash表中查询有o(1)的查询效率,在30条数据和30万条数据中匹配一条数据的效率是一样的

衡量缓存命中率:

1.请求命中次数      2.命中的字节数(内容长度)

缓存级别:

浏览器    》  浏览器缓存   》 CDN缓存   》   调度器(网关)    》varnishi缓存  》 RS本地缓存   》 RS

缓存服务器和后端服务器的请求和响应

200  缓存资源已经失效               把最新资源内容封装到响应body中发送给缓存服务器

304  缓存资源没有发生改变        只有响应头没有响应体 节约网络资源

CDN 内容投递分发网络

用智能DNS自动判断用户的来源,将离用户最近的缓存服务器中的数据投递给用户

判定距离用户最近的标准:

1.静态的调度 单纯的通过距离来判定

2.通过各个缓存服务器当前的链路状态来判断

缓存适用场景

静态内容是适合使用缓存,最大的问题可能是用户看到的数据不精准而已

动态生成的静态页面适合使用缓存,如新闻,商品展示页面 这些页面生成后一般不会经常修改,也不包含用户隐私,所有用户看到的数据也是相同的

动态生成的结果尽量不要使用缓存,因为可能导致用户敏感数据泄露.

数据库在线写事务较高的数据不适合缓存,如在线微博,用户更新频率非常的高,缓存结果很快就会失效

web站点架构

静态资源一般被分成了两个服务器组来存储 把站点图片和其它静态资源(html,css,js)分别存储在不同的服务器组

原因是用户一旦把图片上传至服务器是不会被修改的,只有可能被删除.而且也不会随着网站版本的发布和更新而发生改变

系统架构注意点

1.负载均衡 haproxy
    2.高可用 避免出现单点 keepalived
    3.动静分离 varninsh缓存
    4.读写分离 memcached缓存
    5.系统监控 zabbix
    6.安全加固 iptables selinux sudo

iptables       
  负载均衡     > 静态缓存    >    web服务器      > php服务器     >数据缓存       > mysql
  haproxy          varnish             tomcat                                      memcached
  nginx              nginx                nginx                                        redis
                        动静分离                                                           读写分离

varnish缓存

第一次请求还是会被转发到后端,后面请求同样的资源就会从varnish缓存中取得数据

memcached的缓存逻辑
  一般是开发在代码中实现缓存数据,当请求过来的时候,先去memcached中查询相应的key是否存在,如果存在key则直接返回数据结果
  如果不存在key 则先到数据库中查询出相应数据 然后把数据set到memcached中同时返回给客户端
  每次修改数据后会先去数据库中查询最新结果 然后再去更新memcached

varnish缓存系统基础知识的更多相关文章

  1. Android 12(S) 图像显示系统 - 基础知识之 BitTube

    必读: Android 12(S) 图像显示系统 - 开篇 一.基本概念 在Android显示子系统中,我们会看到有使用BitTube来进行跨进程数据传递.BitTube的实现很简洁,就是一对&quo ...

  2. 嵌入式系统基础知识(一): 系统结构和嵌入式Linux

    目录 一. 嵌入式体系结构 二. 开发过程中的分工 三. 嵌入式软件体系结构 四. 嵌入式Linux 一. 嵌入式体系结构 <嵌入式系统设计师教程>这本书的前三章脉络很清晰, 按照嵌入式系 ...

  3. PON系统基础知识简介

    一  PON基础知识 1.1 PON技术概念 PON(Passive Optical Network)即无源光网络,一种基于点到多点(P2MP)拓朴的技术.“无源”指ODN(光分配网络)不含有任何电子 ...

  4. php缓存技术基础知识

    普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...

  5. Kafka消息系统基础知识索引

    一些观念的修正 从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台". Kafka不仅仅是一个队列,而且是一个存储,有超强的堆积 ...

  6. Linux系统基础知识整理

    一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...

  7. Linux系统基础知识整理(一)

    本文来自于: https://www.cnblogs.com/hafiz/p/6686187.html#4196989 一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰 ...

  8. 嵌入式4412开发板学习知识-Linux系统基础知识

    1. 什么是Linux系统编程 Linux系统编程分为三个部分:系统调用.C库和C编译器. 系统调用系统编程的基础是系统调用,也结束于系统调用.在带有操作系统的嵌入式开发中,需要从操作系统申请一些服务 ...

  9. MAC系统 - 基础知识

    一.基础操作 设置:触控板设置 - >学习具体手势 手势:MacBook Pro手势大全必学手势触控板手势有哪些 左键,右键,滑屏,切换到应用... 一指操作: 一指敲击:鼠标左键: 一指按下: ...

随机推荐

  1. 基于jQuery扁平多颜色选项卡切换代码

    基于jQuery扁平多颜色选项卡切换代码,支持自动轮播切换,鼠标滑过切换的jQuery特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=" ...

  2. nlp资料网站

    原文地址 http://blog.sina.com.cn/s/blog_574a437f01019poo.html 昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫 ...

  3. 每天学点Linux-切割命令split

    一种常见的需求是,有一个比较大的文件,需要把它切割成比较小的几个文件,在Linux系统中你就可以使用Split命令了.Split命令可以将一个大的文件按照文件大小或者行数切割成小文件.Split命令的 ...

  4. 关于C/C++中求最大公约数和最小公倍数的算法

    1.更相减损法 int gcd(int a,int b) { while(a!=b) { if(a>b) a-=b; else b-=a; } return a; } 2.辗转相除法--递归 i ...

  5. python2与python3中除法的区别

    python2中的除法 >>>1/2 0 即一个整数(无小数部分的数)被另外一个整数除,计算结果的小数部分被截除了,只留下了整数部分 有时候,这个功能比较有用,譬如在做一些需要取位数 ...

  6. apache 2.4.23 只能本地访问,其他用户不能访问,提示You don't have permission to access

    这个版本的httpd.conf的配置方法跟原版本的设置不一样了. 需要在目录安全配置中 修改为 Require all granted 比如  把Require local 修改为Require al ...

  7. C++学习 —— 灵活的继承特性

    0.继承与算法开发 在之前的笔记中,我展示了来自继承的威力.继承这种机制能够大幅度减小编码量,子类可以继承父类所有的变量,方法.利用这种机制,我们可以在其他人工作的基础上,完成有自己特色的部分.比如我 ...

  8. Android 官方独立 adb / fastboot 工具包

    https://dl.google.com/android/repository/platform-tools-latest-darwin.zip https://dl.google.com/andr ...

  9. C# 网络爬虫利器之Html Agility Pack如何快速实现解析Html

    简介 现在越来越多的场景需要我们使用网络爬虫,抓取相关数据便于我们使用,今天我们要讲的主角Html Agility Pack是在爬取的过程当中,能够高效的解析我们抓取到的html数据. 优势 在.NE ...

  10. Ext-JS-Modern-Demo 面向移动端示例

    基于Ext Js 6.5.2 面向移动端示例,低于此版本可能存在兼容问题,慎用 已忽略编译目录,请自行编译运行 Sencha Cmd 版本:v6.5.2.15 git地址:https://github ...