成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

認識Varnish負載均衡

網絡 網絡優化 網絡運維
本文對varnish的負載均衡進行了介紹。首先我們對這個操作流程,也就是varnish的結構進行了分析,然后才對負載均衡問題進行了講解。

開源的產品總是會引起不少人的注意和喜愛。那么,varnish這個加速產品,熟悉HTTP這塊領域的朋友都不會陌生。它的負載均衡應用優勢什么樣子的呢?這還要我們從它的結構和性能說起,之后才是對于負載均衡的介紹,其中還有一些進程問題,如果大家不能很好的掌握,還需要對這些知識進行一下充電。

Varnish負載均衡的分析

最近分析了varnis-2.0.4的一部分代碼,主要側重于其在負載均衡部分的實現。通過閱讀一些參考文獻,以及自己的一些見解我分析,將代碼分析文檔整理于此。

首先將varnish整體工作流程在此進行介紹。

1.Varnish 的總體結構

Varnish 主要有兩個進程:管理進程和 cache 子進程。

1)管理進程主要就是對于varnish的整個工作狀態進行的調整和設置。編譯運行之后,它將建立一個守護進程varnishd。Varnishd不斷folk()出cache子進程來處理HTTP請求。它的實現部分在源代碼中bin/varnishd/目錄中,主要文件有varnishd.c 、mgt.h、mgt_chld.c、mgt_param.c mgt_cli.h、mgt_pool.c 、mgt_vcc.c、mgt_cli.h、mgt_cli.c。

2)下面談談cache子進程。

Cache子進程包含了實現命令行加載、請求處理、緩存以及負載均衡的所有線程。分別為:命令行接受處理線程(CLI_Run) ,放牧線程(wrk_herder_thread),放牧超時線程(wrk_herdtimer_thread),請求接受線程(vca_acct),數據接受線程(vca_main),很多工作線程(wrk_thread),HTTP對象超時線程(exp_timer),后臺服務器連接探測線程(vbp_wrk_poll_backend)。

主要涉及到的文件有:

cache_lck.c、cache_panic.c、cache_cli.c、cache_fetch.c、cache_center.c、cache_vcl.c、cache_http.c、cache_session.c、cache_backend_cfg.c、cache_backend_pool.c、cache_backend.h、cache_pool.c、cache_expire.c、cache_hash.c、cache_accptor.c

Cache 子進程處理所有具體工作,各個線程的任務包括:

◆命令行接受處理線程(CLI_Run):接受從管理進程通過管道傳過來的命令,做出相應決定。其中初始時由管理進程默認產生,三個命令(vcl.load、vcl.use、start)來啟動后臺服務器連接探測線程 和兩個接受線程。

◆放牧線程(wrk_herder_thread):用于產生工作線程池。線程不足時會增加線程池。

◆放牧超時檢查線程(wrk_herdtimer_thread):清理一些工作超時的工作線程。

◆請求接受線程(vca_acct):接受 HTTP 初次請求,并叫醒某個工作線程,處理請求。

◆數據接受線程(vca_main):在發送數據以后,繼續可能的再次請求,并把請求交給工作線程。

◆工作線程(wrk_thread):不斷處理請求,進入狀態機。如果緩存沒有命中,還需要從后臺服務取過數據,存入緩存并回復。然后把該連接通過管道轉給數據接受線程并睡去。

◆HTTP 對象超時檢查線程(exp_timer):檢查二叉堆中 HTTP 超時對象,刪除之。

◆后臺服務器連接探測線程(vbp_wrk_poll_backend):針對不同的后臺服務器組進行輪詢,檢查存活與否。

各線程的工作流程大致如圖一所示

圖一:cache子進程各個線程流程圖

圖一:cache子進程各個線程流程圖#p#

2.負載均衡實現的分析

就目前分析來看,Cache子進程的代碼實現部分主要由cache_main.c這個文件為主要脈絡的。Cache_main.c中將cache子進程的各個線程一一初始化。

目前我所關注的重點在于wrk_thread部分,它是實現varnish負載均衡的主要內容。

1)wrk_thread的作用:不斷處理請求,進入狀態機。如果緩存沒有命中,還需要從后臺服務取過數據,存入緩存并回復。然后把該連接通過管道轉給數據接受線程并sleep。

2)wrk_thread的工作流程:

圖二:cache子進程中,wrk_thread線程工作流程

圖二:cache子進程中,wrk_thread線程工作流程

3)Wrk_thread的代碼實現分析:wrk_thread線程在cache_main.c文件中初始化(代碼:WRK_Init() ,cache_main.c,line 121),具體實現在cache_pool.c文件中出現。

Cache_pool.c文件中主要函數有:

static void

wrk_addpools(const unsigned pools):增添work線程池

static void *

wrk_herder_thread(void *priv) :放牧進程,用于產生工作線程池。線程不足時會增加線程;

static void *

wrk_herdtimer_thread(void *priv):放牧超時檢查線程,清理一些工作超時的工作線程。

static void

wrk_breed_flock(struct wq *qp):在需要并且空間允許的情況下,產生新的線程

static void

wrk_decimate_flock(struct wq *qp, double t_idle, struct varnish_stats *vs):檢查空閑或者已經執行完的線程,從線程池中清除。

static void *

wrk_thread(void *priv):實際的工作線程,實現主要功能。

責任編輯:佟健 來源: 互聯網
相關推薦

2010-04-23 00:03:18

全局負載均衡

2010-05-06 12:56:13

全局負載均衡

2021-09-14 08:44:11

負載均衡Bundle

2010-04-26 15:25:40

2010-04-28 16:18:19

負載均衡技術

2010-04-21 16:21:39

2010-05-10 16:46:23

負載均衡交換機

2017-07-03 08:08:25

負載均衡分類

2010-05-04 18:10:07

路由器負載均衡

2010-04-27 12:42:45

LVS負載均衡

2019-03-18 10:44:41

負載均衡DNSUDP

2010-05-04 16:10:51

負載均衡算法

2010-05-07 14:27:16

IPVS負載均衡

2010-05-10 16:20:32

負載均衡策略

2012-07-31 09:25:42

nginx負載均衡反向代理

2013-04-22 11:29:14

Nginx

2010-05-05 22:58:46

2021-04-21 14:56:28

負載均衡高并發優化技術架構

2022-05-06 09:21:57

工作負載SPDK線程

2010-04-20 12:49:27

負載均衡策略
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.国产精 | 欧美成人a∨高清免费观看 欧美日韩中 | 国产伦精品一区二区三区照片91 | 亚洲成av | 91精品国产91久久久久久吃药 | av在线免费观看网站 | 99精品视频免费观看 | 一区二区精品 | 中文精品视频 | 国产视频在线一区二区 | 九九九久久国产免费 | caoporn视频在线 | 夜夜艹 | 国产高清美女一级a毛片久久w | 免费毛片网站在线观看 | 亚洲欧美一区二区三区国产精品 | 全免一级毛片 | 日韩在线电影 | 免费观看一区二区三区毛片 | 中文字幕国产精品 | 亚洲一区二区网站 | 国产精品射 | 美日韩中文字幕 | 日韩成人一区 | 国产精品污www一区二区三区 | 国产 欧美 日韩 一区 | 成人久久| 99热碰 | 亚洲性在线| 国产最新精品视频 | 久久天天 | www国产精 | 日韩精品专区在线影院重磅 | 青青草视频网站 | 99精品99| 久久精彩| 日韩在线精品 | 国产精品九九九 | 欧美在线观看黄色 | 国产一区二区三区色淫影院 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 |