日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Varnish介绍

發布時間:2023/12/15 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 Varnish介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

varnish介紹

varnish

	官方網站
		https://varnish-cache.org/
		http://book.varnish-software.com/4.0/
	Varnish是反向HTTP代理,有時被稱為gaHTTP加速器或Web加速器,反向代理是作為普通服務器向客戶端顯示的代理服務器。
	varnish(高速緩存)存儲器中的文件或文件片段,用于減少將來的等效請求時的響應時間和網絡帶寬消耗。
	varnish設計用于現代硬件,現代操作系統和現代工作負載。
	Varnish采用全新的軟件體系結構,和現在的硬件體系配合比較緊密。
	Varnish不僅僅是用緩存內容來加速你服務器的反向HTTP代理,根據安裝情況,varnish也可以用作:
		web應用防火墻,DDoS攻擊防御者,熱鏈保護器,負載平衡器,整合點,單點登錄網關,認證授權策略機制,快速修復不穩定的后端和HTTP路由器。
	varnish是靈活的,因為可以在其Varnish配置語言(VCL)中編寫自己的緩存策略,VCL是基于C的域特定語言,配置完成VCL后,將VCL轉換為C代碼并進行編譯,因此Varnish可以快速執行。

varnish的特點

	Varnish基于內存緩存,重啟后數據將消失      
	利用虛擬內存方式,io性能好
	支持設置0~60秒內的精確緩存時間
	VCL配置管理比較靈活
	32位機器上緩存文件大小為最大2G
	具有強大的管理功能,例如top,stat,admin,list等
	狀態機設計巧妙,結構清晰
	利用二叉堆管理緩存文件,達到積極刪除目的

varnish的工作原理

	Varnish 與一般服務器軟件類似,分為master 進程和child 進程。
		master進程讀入存儲配置文件,調用合適的存儲類型,然后創建/讀入相應大小的緩存文件,接著master 初始化管理該存儲空間的結構體,然后fork 并監控child 進程。child進程在主線程的初始化的過程中,將前面打開的存儲文件整個mmap 到內存中,此時創建并初始化空閑結構體,掛到存儲管理結構體,以待分配。
		child進程分配若干線程進行工作,主要包括一些管理線程和很多worker 線程。
	varnish的某個負責接收新HTTP 連接線程開始等待用戶,如果有新的HTTP連接過來,它總負責接收,然后喚醒某個等待中的線程,并把具體的處理過程交給它。
	Worker線程讀入HTTP 請求的URI,查找已有的object,如果命中則直接返回并回復用戶,如果沒有命中,則需要將所請求的內容,從后端服務器中取過來,存到緩存中,然后再回復。
	分配緩存的過程:
		它根據所讀到object 的大小,創建相應大小的緩存文件。
		為了讀寫方便,程序會把每個object的大小變為最接近其大小的內存頁面倍數。
		然后從現有的空閑存儲結構體中查找,找到最合適的大小的空閑存儲塊,分配給它。
		如果空閑塊沒有用完,就把多余的內存另外組成一個空閑存儲塊,掛到管理結構體上。
		如果緩存已滿,就根據LRU 機制,把最舊的object 釋放掉。
	釋放緩存的過程:
		有一個超時線程,檢測緩存中所有object 的生存期,如果超初設定的TTL(Time To Live)沒有被訪問,就刪除之,并且釋放相應的結構體及存儲內存。
		注意釋放時會檢查該存儲內存塊前面或后面的空閑內存塊,如果前面或后面的空閑內存和該釋放內存是連續的,就將它們合并成更大一塊內存。
	整個文件緩存的管理,沒有考慮文件與內存的關系,實際上是將所有的object 都考慮是在內存中,如果系統內存不足,系統會自動將其換到swap 空間,而不需要varnish 程序去控制。

varnish的優缺點

	varnish的優點
		Varnish采用了“Visual Page Cache”技術,所有緩存的數據都直接從內存讀取。
		Varnish穩定性比Squid高,宕機率很低。
		通過Varnish管理端口,可以使用正則表達式快速、批量地清除部分緩存。
		Varnish可以支持更多的并發連接。
	
	varnish的缺點
		Varnish在高并發狀態下,CPU、I/O和內存等資源的開銷高于Squid。
		Varnish的進程一旦掛起、崩潰或者重啟,緩存的數據都會從內存中釋放出來,此時的所有請求都會被發送到后端應用服務器上,在高并發的情況下,就會給后端服務器造成很大壓力。

varnish設計原則

	varnish設計目的:
		解決實際問題
		運行于現代硬件(64位多核架構)
		與內核協同工作,而不是針對內核
		將Varnish配置語言VCL翻譯成C語言
		可通過varnish模塊VMODs擴展
		通過其面向工作區的共享內存模型減少鎖定爭用
	varnish的重點始終是性能和靈活性。
	Varnish使用面向工作區的內存模型,而不是在運行時分配確切的空間空間。
	varnish不管理其分配的內存,但它將此任務委托給操作系統,因為內核通常可以比用戶空間程序更好地執行此任務。
	事件過濾器和通知設施,例如epoll和kqueue是操作系統的高級特性,這些特性是為像varnish這樣的高性能的服務器設計的,通過使用這些特性,varnish可以移動大量的復雜信息到操作系統的內核中,這樣會更好地決定那些線程會被執行。
	Varnish使用Varnish配置語言VCL,允許準確地指定如何使用和組合Varnish的功能。
	VCL被翻譯成C編程語言代碼,該代碼使用標準C編譯器進行編譯,然后在運行時直接動態鏈接到Varnish中。
	當你需要的功能在VCL中沒有提供時,你可以在數據庫中找到個ip地址,以便于你可以寫原始C編碼在自己的VCL上。
	那個地址是在線的,但不鼓勵使用,相比于在線的C,建議把你的C編碼放入varnish的VMOD模塊中。
	VMOD通常以VCL和C編程語言編碼,實際上,VMOD是一個共享庫,具有可以從VCL代碼調用的函數。
	varnish共享存儲日志(VSL)允許Varnish讓其他應用程序解析數據并提取有用的信息,這個過程幾乎無需花費時間。

存儲對象

		對象:HTTP響應消息的本地存儲
		varnish的對象存儲在內存中,并通過hash key進行尋址
		可以控制hashing
		多個對象可以具有共同的hash
	對象是本地存儲的響應信息且被定義在協議中,這些信息被映射為hash值并存儲在內存中,涉及到的相關對象被存儲hash樹中。
	Varnish的一個相當獨特的功能是它允許你控制散列算法的輸入。
	默認情況下,hash key是由HTTP主機頭和URL制成,且非常重要。
	但是,你也可以通過使用其他東西來創建hash key,例如,你可以使用Cookie或客戶端請求的用戶代理來創建hash key。
	HTTP指定可以根據客戶端的偏好從相同的URL提供多個對象,例如,gzip格式的內容只發送到指示gzip支持的客戶端。
	varnish在一個hash key下存儲單個壓縮對象。
	根據客戶端請求,Varnish會檢查Accept-Encoding頭域。
	如果客戶端不接受gzip對象,Varnish會即時解壓縮對象并將其發送給客戶端。

對象生命周期

	圖中顯示了緩存對象的生命周期。
	緩存對象具有原始時間戳t_origin和三個持續時間屬性:1)TTL,2)grace和3)keep。
	t_origin是在后端創建對象的時間。
	一個對象生活在緩存中,直到經過之后TTL + grace + keep,該對象被Varnish守護進程刪除。
	VCL - vcl_backend_fetch和 VCL - vcl_backend_response有選擇的解釋了varnish是如何處理后端的響應以及這些時間屬性是如何影響后續行動的。

varnish的應用程序

	varnish應用程序組成:
		/usr/bin/varnishadm
		/usr/bin/varnishhist
		/usr/bin/varnishlog
		/usr/bin/varnishncsa
		/usr/bin/varnishstat
		/usr/bin/varnishtest
		/usr/bin/varnishtop
		/usr/sbin/varnishd
		。。。。
	varnissh最重要的部分是守護進程(后臺服務)varnishd。
	核心進程varnish的接收來自客戶端的HTTP請求,并將請求發送到后端backend,緩存返回的緩存的結果并回復客戶端請求。 
	varnishtest是用于測試您的Varnish安裝的腳本驅動程序, varnishtest非常強大,因為它允許創建客戶端模型,從模型或真實的后端中獲取內容,與實際的Varnish配置交互,并說明預期的行為。
	varnishadm控制正在運行的Varnish實例,該 varnishadm 實用程序建立在的命令行界面(CLI)連接的varnishd上,此實用程序是唯一可能影響運行的Varnish實例的實用程序,可以使用varnishadm開始和停止varnishd,更改配置參數,重新加載Varnish配置語言(VCL),查看最新的參數文檔等。
	varnish日志varnishlog提供大量信息,因此通常需要對其進行過濾。例如,“只顯示與X匹配的”。 
	varnishstat用于訪問全局計數器,它提供總體統計信息,例如請求總數,對象數量等, varnishstat在將其varnishlog用于分析您的varnish安裝時特別有用。

varnish安裝

	varnish官方站點: http://www.varnish-cache.org/
	直接下載安裝包進行安裝
	采用epel源安裝
		yum install varnish
		rpm -ql varnish
		/etc/logrotate.d/varnish
		/etc/varnish
		/etc/varnish/default.vcl
		/etc/varnish/varnish.params
		/run/varnish.pid
		/usr/bin/varnishadm
		/usr/bin/varnishhist
		/usr/bin/varnishlog
		/usr/bin/varnishncsa
		/usr/bin/varnishstat
		/usr/bin/varnishtest
		/usr/bin/varnishtop
		/usr/lib/systemd/system/varnish.service
		/usr/lib/systemd/system/varnishlog.service
		/usr/lib/systemd/system/varnishncsa.service
		/usr/sbin/varnish_reload_vcl
		/usr/sbin/varnishd
		/usr/share/doc/varnish-4.0.4
		/var/lib/varnish
		/var/log/varnish

varnish程序架構

		Manager進程
		Cacher進程,包含多種類型的線程:
				accept, worker, expiry, ... 
		shared memory log:
				統計數據:計數器;
				日志區域:日志記錄;
					varnishlog, varnishncsa, varnishstat... 
		配置接口:VCL(Varnish Configuration Language)
				vcl complier --> c complier --> shared object

varnish的程序環境

		varnish環境配置,配置varnish服務進程的工作特性,例如監聽的地址和端口,緩存機制:
			/etc/varnish/varnish.params
		VCL配置文件,配置各Child/Cache線程的緩存策略:
			/etc/varnish/default.vcl
		主程序:
				/usr/sbin/varnishd
		CLI interface:
				/usr/bin/varnishadm
		Shared Memory Log交互工具:
				/usr/bin/varnishhist
				/usr/bin/varnishlog
				/usr/bin/varnishncsa
				/usr/bin/varnishstat
				/usr/bin/varnishtop		
		測試工具程序:
				/usr/bin/varnishtest
		VCL配置文件重載程序:
				/usr/sbin/varnish_reload_vcl
		Systemd Unit File:
				/usr/lib/systemd/system/varnish.service:varnish服務
				/usr/lib/systemd/system/varnishlog.service:varnish日志服務
				/usr/lib/systemd/system/varnishncsa.service	:varnish日志持久的服務

總結

以上是生活随笔為你收集整理的Varnish介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。