varnish缓存系统基础知识
缓存系统类型
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缓存系统基础知识的更多相关文章
- Android 12(S) 图像显示系统 - 基础知识之 BitTube
必读: Android 12(S) 图像显示系统 - 开篇 一.基本概念 在Android显示子系统中,我们会看到有使用BitTube来进行跨进程数据传递.BitTube的实现很简洁,就是一对&quo ...
- 嵌入式系统基础知识(一): 系统结构和嵌入式Linux
目录 一. 嵌入式体系结构 二. 开发过程中的分工 三. 嵌入式软件体系结构 四. 嵌入式Linux 一. 嵌入式体系结构 <嵌入式系统设计师教程>这本书的前三章脉络很清晰, 按照嵌入式系 ...
- PON系统基础知识简介
一 PON基础知识 1.1 PON技术概念 PON(Passive Optical Network)即无源光网络,一种基于点到多点(P2MP)拓朴的技术.“无源”指ODN(光分配网络)不含有任何电子 ...
- php缓存技术基础知识
普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...
- Kafka消息系统基础知识索引
一些观念的修正 从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台". Kafka不仅仅是一个队列,而且是一个存储,有超强的堆积 ...
- Linux系统基础知识整理
一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰的介绍,使得哪些刚接触Linux的小伙伴可以快速入门,也方便自己以后进行复习查阅. 二.基本知识整理 1.Linux文件 ...
- Linux系统基础知识整理(一)
本文来自于: https://www.cnblogs.com/hafiz/p/6686187.html#4196989 一.说明 本篇文章,我将结合自己的实践以及简介,来对linux系统做一个直观清晰 ...
- 嵌入式4412开发板学习知识-Linux系统基础知识
1. 什么是Linux系统编程 Linux系统编程分为三个部分:系统调用.C库和C编译器. 系统调用系统编程的基础是系统调用,也结束于系统调用.在带有操作系统的嵌入式开发中,需要从操作系统申请一些服务 ...
- MAC系统 - 基础知识
一.基础操作 设置:触控板设置 - >学习具体手势 手势:MacBook Pro手势大全必学手势触控板手势有哪些 左键,右键,滑屏,切换到应用... 一指操作: 一指敲击:鼠标左键: 一指按下: ...
随机推荐
- Atitit 热烈庆祝读经器项目圆满完成
Atitit 热烈庆祝读经器项目圆满完成 1.1. 读经器项目简单介绍 1 1.2. 一万小时定律和十年一个专家定律 1 1.3. 获得加持前景 1 1.4. 核心源码 1 1.5. 项目git 2 ...
- Nios II 程序固化(如何下载elf文件)
Nios II 程序固化(如何下载elf文件) 2018年10月15日 21:37:32 瓜儿不甜 阅读数:723 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 安全工具-cansina
Cansina是一款Web内容的发现工具,使用该工具指定详细的web目录内容作为payload即可破探测出web路径等资源. 工具安装操作如下 pip install --user requests[ ...
- Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决
问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...
- npm install 项目安装遇到问题
npm cache clean/clear --force
- Pandas基础(十一)时间序列
1. pandas时间序列:时间索引 2. pandas时间序列数据结构 2.1 定期序列 3. 频率和偏移 4. 重采样,转移,加窗口 4.1 重采样及频率转换 4.2 时间移动 4.3 滚动窗口 ...
- JavaScript数组删除指定元素
^_^ function arrayRemoveItem(arr, delVal) { if (arr instanceof Array) { var index = arr.indexOf(delV ...
- laravel5.8笔记三:常用命令
创建控制器 php artisan make:controller Index/IndexController 创建模型 php artisan make:model Index/IndexContr ...
- JS设计模式——观察者模式(通俗易懂)
Observer模式的概念 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段 ...
- 给新手学习Java的建议
有很多的朋友都在问我一个同样的问题:新手应该如何能学好Java.我做了一个简单的总结,分享给大家: 1-信念:无论你是选择JAVA,C,C#,C++....还是其他的语言编程,信念是第一位,只有相信自 ...