varnish及其應用

Varnish是一款高性能的開源HTTP緩存加速器,從下圖(網站拓撲結構視圖)不難看出,緩存對於現代互聯網的重要意義。

緩存存在的基礎

程序具有局部性

時間局部性

過去訪問過的數據在一段時間內有可能被再次訪問

空間局部性

過去被訪問的某數據周圍的其他數據有可能也被訪問

緩存得以生效就是因爲程序的局部性

緩存的存儲方式

緩存以key-value形式存儲

key:訪問路徑,url,經過hash計算後存儲;

value:web content

緩存主要緩存的是熱點數據

緩存命中率

hit/(hit+miss)

衡量標準

文檔命中率:以命中文檔的個數進行衡量;

字節命中率:以命中內容的大小進行衡量;

注意事項

1、緩存對象有生命週期,所以需定期清理;

2、當緩存耗盡時,可基於LRU(最近最少使用)算法,實時清理一部分緩存,以騰出空間存放新的緩存;

3、緩存需注意私密性,有些內容不可緩存,如用戶的私有數據、報文首部中包含“Authorization,Cookie, Vary: accept-encoding=”等信息的;

緩存處理步驟

接收請求 --> 解析請求(提取請求的url及各種首部)--> 查詢緩存 --> 新鮮度檢測 --> 構建響應報文--> 發送響應 --> 記錄日誌



varnish工作架構圖

wKiom1Vy3fzA7Yd8AAFVIBOjgxA386.jpg

Management管理進程

編譯VCL並應用新配置、監控varnish、初始化varnish並提供命令行接口CLI;



配置語法

(1) //,#,註釋單行,/*comment*/註釋多行;

(2) sub $NAME用於定義函數,但函數不接受參數;

(3) 不支持循環;

(4) 支持衆多內置變量;

(5) 支持使用終止語句,但沒有返回值;

(6) “域”專用語言,即所寫代碼只能應用在特定的域上;

(7) 支持衆多操作符:=,==,~,!,&&,||;


varnishd

 varnishd [-a address[:port]] [-b host[:port]][-d] [-F] [-f config]

-a:指明監聽的地址和端口,默認端口爲6081;

-b:指明後端主機和端口;

-d:打開debug模式;

-F:運行於前臺;

-f:指明配置文件;

-l:指明用於保存日誌文件的內存空間大小;

-s[name=]type[,options]:指明使用的存儲後端;

varnish配置

1、啓動varnish前要先定義其腳本配置文件

配置打開資源限制段

NFILES=131072

多能打開的最大文件數,varnish會自動調整該值;

MEMLOCK=82000

所能使用的內存空間,varnish會自動調整該值;

NPROCS="unlimited"

單個用戶所能運行的最大線程數;

RELOAD_VCL=1

定義varnish是否會自動重新裝載其緩存策略配置文件;“=1”表示在我們使用腳本重啓varnish時,其會自動重載vcl配置文件;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章