菜鸟学Linux 第104篇笔记 varnish-阿里云开发者社区

开发者社区> 数据库> 正文

菜鸟学Linux 第104篇笔记 varnish

简介:

菜鸟学Linux 第104篇笔记 varnish




内容总览

varnish

缓存类型

Expire,Cache-control, Etag

CDN (Content Delivery Network)内容分发网络

缓存

http 协议

varnish 安装




varnish


缓存类型

公用缓存

服务器端缓存,可供其它用户再次调用


私有缓存

用户个人电脑的缓存



Expire

expire  绝对时间记时

max-age 相对时间记时法


Cache-control

public

private

no-cache  不是不缓存,指的是缓存后想要使用此缓存时,既要向服务器发送验证其是否过期


Etag 后边会跟一串随机数,用来标识一个网站页面的版本,是否更改


条件判断





CDN (Content Delivery Network)内容分发网络

是一堆缓存服务器,有子缓存服务器和父缓存服务器,它们分别放在不同的物理地区,它们是用来

缓存网站的静态数据,和可缓存的动态数据,虽然他们可以缓存数据,但是用户访问的时候还是要

请求dns,而一般的dns会直接给出真正的web服务器的IP地址,从而直接访问真正的web服务器去了

如何让客户端访问网站时,先去访问缓存服务器,而不是直接访问真正的web服务器呢?

它是构建了智能dns,当一个用户访问某网站时,dns返回的IP地址是缓存服务器的地址,而非真正

的web服务器,缓存服务器除了可以为客户端提供缓存之外,有时候还可以自己自行去web服务器下

载过时的数据,或者需要缓存的数据,  智能DNS的原理是,分析不同的客户端所发来的dns请求,

根据其原IP地址,分析其所在的区域是网通还是电信。。等等而作出不同的返回值,即所返回的

DNS解析的IP地址会不同,一般都是回复给用户的地址离用户的距离最短或最快的缓存服务器。


cdn分类

自建cdn网络和租用cdn网络,租用的费用一般按流量来计算#元/M

(呵呵,,是不是还是自建的好?  这就得根据公司的领导如何决择了)

智能dns

bind view dns数据缓存在内存中(仅当条目少的情况下)

bind-dlz + mysql (将dns条目放在数据库中,相对上种响应客户端相对较慢)



缓存

命中率

文档命中率

字节命中率


缓存类型

私有缓存

公共缓存


内容路由

ICP (internet content protocol)

HTCP

Cache Digest

CARP Cache Array Routing Protocol

缓存处理的具体步骤

接收请求

解析请求 (代理的功能)

查询缓存 (检查本地缓存虽否存在对方请求的内容的副本)

副本的新鲜度检测 (检查本地缓存的副本是否为最新版本)

构建响应 (代理的功能)

发送响应

记录日志


保证副本的新鲜度?

文档过期机制

HTTP/1.0: Expires (过期时间) 绝对时间

HTTP/1.1: Cache-Control (max-age=) 相对时间


条件式请求

mtime: If-Modified-Since 基于时间的条件式请求

ETag: If-None-Match 基于扩展标签条件式请求



控制缓存的能力

由原始服务器定义

Cache-Control

max-age

s-maxage

no-store

no-cache 能缓存,但不能直接使用此缓存对象,需要先验证其新鲜度

must-revalidate 必须进行新鲜度验证


原始服务器不添加任何机制,由缓存服务器自己决定缓存时长


客户端控制缓存

Cache-Control

max-stale 告知缓存机制可以使用过期的文档

no-cache 告知缓存机制必须进行验证,否则不会接受任何缓存文档

no-store 告知缓存机制尽快删除缓存中的文档




http 协议

request:

method url version

HEADERS

BODY


response

version status reason

HEADERS


BODY


首部

通用

Connection: close|keep-alive

Date 时期时间

Host 请求的主机

Pragma no-cache

via: 请求或响应在客户端和服务器之间传递时所经过的代理

Transfer-Encoding 消息主体的传输编码方式,chunked表示采用编码的方式

请求

If-Modified-Since

If-None-Match

Referer

User-Agent 用户浏览器类型


Host 请求的主机

Accept-Encoding 接受的编码方式

Accept-Language 接受的语言

Authorization 服务端发送www-authenticate时,客户通过此首部提供认证信息

Accept-Chaset 接受的字符集

响应

Etag

Location 重定向的新位置

Server 服务器软件信息

WWW-Authenticate 要求对客户端进行认证

实体

Content-Encoding

Content-Language

Content-Lenth

Content-Type 内容的MIME格式

Expires

Last-Modified


varnish

一个公共缓存服务器

日志直接保存在内存中

一个管理进程,多个子进程,用来响应用户的请求,和缓存的管理

提供cli接口

VCL compiler (Vanish Control language) 写程序来定义配置文件

C compiler


状态引擎

vcl_recv, vcl_pass, vcl_hash, vcl_pipe

vcl_hash: vcl_hit, vcl_miss

vcl_pass: vcl_fetch

vcl_hit: vcl_deliver, vcl_pass

vcl_miss: vcl_fetch, vcl_pass

vcl_fetch: vcl_deliver




varnish 安装

下载varnish 的rpm包 但是版本相对较老是2.0的

现在最高版本为5.0多的   rpm包下载请到epel里查找


所依赖的安装包

varnish-libs-2.1.5-6.el6.x86_64

jemalloc-3.6.0-1.el6.x86_64.rpm


下载完成使用yum来安装此软件

# yum --nogpgcheck localinstall varnish-2.1.5-6.el6.x86_64.rpm


(日后还需再提升,此次仅做了解,配置varnish需要对那几个状态引擎和http协议有一定的深入

了解才可配置使其缓存服务器发挥出最大的功用,varnish是key-value存储方式,它的缓存数据

需要用户去自行定义需要缓存的数据,所以你懂得呵呵,必须得对web服务器经常访问的热点数据

有相当的了解程度,个人见解  娱乐娱乐, 以后再深入研究呵呵 )

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1899164如需转载请自行联系原作者


Winthcloud

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章