专栏首页北京马哥教育varnish缓存实现动静分离

varnish缓存实现动静分离

一、简介

Web缓存是指一个Web资源(html,js,css,images...)存在与Web服务器和客户端(浏览器),缓存会根据进来的请求报文做出响应,后缓存一份到本地的缓存中;当下一个请求到来的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用从缓存中响应访问请求还是向后端服务器再次发送请求,取决于缓存是否过期及其请求的内容是否发生改变。在前面所学的memcached中有过缓存的概念,但此内存缓存存在很大的弊端,被当今互联网企业所淘汰,varnish具有高速缓存的功能,得到了很多大型网站的青睐。有效的缓存能减少后端主机的压力,实现快速响应用户的请求,提高用户体验。

二、varnish工作原理及其相关配置说明

varnish架构图:

原理:varnish主要是有management及child进程所组成,management进程主要负责提供命令行接口、编译vcl,健康状态检测child子进程是否存活及其监控varnish,而child子进程负责工作线程,生成缓存日志,查看缓存是否过期等一系列工作。

vcl(varnish configuraltion languages):varnish域专用配置语言,是基于状态引擎,转台之间存在着相关性,但彼此之间相互隔离,每个引擎使用return来退出当前状态并进入下一个状态,不同的状态的引擎是不尽相同。

vcl处理流程图:

请求流程:请求分为为可缓存和不可缓存,当请求可缓存时,是否命中,命中则从本地缓存响应,未命中则到达后端主机取得相应的结果,公共缓存则可缓存,缓存一份到缓存后再次响应给客服端,如私有数据则不可缓存直接响应即可。

实例配置:

测试:

请求到达后可以使用的VCL内建公用变量:

后端主机响应Varnish之前,可以使用的公用变量:

从cache或后端主机获取内容后,可以使用的公用变量:

对客户端应答时,可以使用的公用变量:

三、Varnish负载均衡及其动静分离实战

实验环境如下:

注意:在实现两台后端主机负载均衡时需将此路径设置为不缓存直接从后端主机中取得数据

配置完成后可使用varnish_reload_vcl完成编译和应用此配置,也可使用varnishadm实现,负载均衡实现图如下:

配置动静分离配置如下:

实验图:

将动态页面发往websrv1,实现动静分离效果。

将动态静态页面发往websrv2,实现动静分离效果。

总结:varnish主要是通过哈希URL实现是否缓存,varnish在接收用户请求,后端服务器响应用户请求时,通过一系列的处理后将缓存一份到varnishu服务器,当客服端再次请求时,缓存服务器中的数据未过期或内容为发生改变时将直接从缓存中响应,大大的减轻了后端主机的压力。

作者:小耳朵

来源:http://purify.blog.51cto.com/10572011/1871424

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux),作者:马哥教育

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [干货]varnish原理|杨过同学

    Varnish是一款高性能的开源HTTP加速器(其实就是带缓存的反向代理服务),可以把http响应内容缓存到内存或文件中,从而提高web服务器响应速度。与传统的...

    小小科
  • Python缓存神奇库cacheout全解

    python的缓存库(cacheout) 链接: 项目: https://github.com/dgilland/cacheout 文档地址: https:/...

    小小科
  • Web Cache原理,你真的造吗?

    一、Web Cache 在介绍Web cache时,我们需要简单介绍缓存的理解 1.1 缓存解释 缓存通常是基于键值对来缓存的,键通过hash计算后,存放于内存...

    小小科
  • 缓存穿透、缓存雪崩、缓存热点

    摘要:本文主要讲解在使用缓存的过程中,经常出现的三个问题:缓存穿透、缓存雪崩、缓存热点。

    IT云清
  • Java缓存深入理解

    对于缓存大家都不会陌生,但如何正确和合理的使用缓存还是需要一定的思考,本文将基于Java技术栈对缓存做一个相对详细的介绍,内容分为基本概念、本地缓存、远程缓存和...

    用户1216676
  • WEB缓存探究

    由于项目越来越大,即使了使用代码压缩工具减少文件大小,js文件还是不可避免的越变越大。而对于用户来说每次重新下载都有可能会消耗大量时间,让我们的首屏展示有较长时...

    疯狂的技术宅
  • [干货]varnish原理|杨过同学

    Varnish是一款高性能的开源HTTP加速器(其实就是带缓存的反向代理服务),可以把http响应内容缓存到内存或文件中,从而提高web服务器响应速度。与传统的...

    小小科
  • 反向代理的攻击面 (下)

    让我们接着上节的内容,继续探讨。建议读者先阅读第一部分,这将有助于理解本节的内容。

    随心助手
  • SQL 数据库满载,Redis 力挽狂澜

    为什么你的 ERP/MES/CRM/HR/OA 系统访问首页都很慢,明明你确定打开页面时没有大量的写入操作!

    Lenis
  • [日常] HTTP的缓存

    陶士涵

扫码关注云+社区

领取腾讯云代金券