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

認(rèn)識(shí)Varnish負(fù)載均衡

網(wǎng)絡(luò) 網(wǎng)絡(luò)優(yōu)化 網(wǎng)絡(luò)運(yùn)維
本文對(duì)varnish的負(fù)載均衡進(jìn)行了介紹。首先我們對(duì)這個(gè)操作流程,也就是varnish的結(jié)構(gòu)進(jìn)行了分析,然后才對(duì)負(fù)載均衡問題進(jìn)行了講解。

開源的產(chǎn)品總是會(huì)引起不少人的注意和喜愛。那么,varnish這個(gè)加速產(chǎn)品,熟悉HTTP這塊領(lǐng)域的朋友都不會(huì)陌生。它的負(fù)載均衡應(yīng)用優(yōu)勢(shì)什么樣子的呢?這還要我們從它的結(jié)構(gòu)和性能說起,之后才是對(duì)于負(fù)載均衡的介紹,其中還有一些進(jìn)程問題,如果大家不能很好的掌握,還需要對(duì)這些知識(shí)進(jìn)行一下充電。

Varnish負(fù)載均衡的分析

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

首先將varnish整體工作流程在此進(jìn)行介紹。

1.Varnish 的總體結(jié)構(gòu)

Varnish 主要有兩個(gè)進(jìn)程:管理進(jìn)程和 cache 子進(jìn)程。

1)管理進(jìn)程主要就是對(duì)于varnish的整個(gè)工作狀態(tài)進(jìn)行的調(diào)整和設(shè)置。編譯運(yùn)行之后,它將建立一個(gè)守護(hù)進(jìn)程varnishd。Varnishd不斷folk()出cache子進(jìn)程來處理HTTP請(qǐng)求。它的實(shí)現(xiàn)部分在源代碼中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)下面談?wù)刢ache子進(jìn)程。

Cache子進(jìn)程包含了實(shí)現(xiàn)命令行加載、請(qǐng)求處理、緩存以及負(fù)載均衡的所有線程。分別為:命令行接受處理線程(CLI_Run) ,放牧線程(wrk_herder_thread),放牧超時(shí)線程(wrk_herdtimer_thread),請(qǐng)求接受線程(vca_acct),數(shù)據(jù)接受線程(vca_main),很多工作線程(wrk_thread),HTTP對(duì)象超時(shí)線程(exp_timer),后臺(tái)服務(wù)器連接探測(cè)線程(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 子進(jìn)程處理所有具體工作,各個(gè)線程的任務(wù)包括:

◆命令行接受處理線程(CLI_Run):接受從管理進(jìn)程通過管道傳過來的命令,做出相應(yīng)決定。其中初始時(shí)由管理進(jìn)程默認(rèn)產(chǎn)生,三個(gè)命令(vcl.load、vcl.use、start)來啟動(dòng)后臺(tái)服務(wù)器連接探測(cè)線程 和兩個(gè)接受線程。

◆放牧線程(wrk_herder_thread):用于產(chǎn)生工作線程池。線程不足時(shí)會(huì)增加線程池。

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

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

◆數(shù)據(jù)接受線程(vca_main):在發(fā)送數(shù)據(jù)以后,繼續(xù)可能的再次請(qǐng)求,并把請(qǐng)求交給工作線程。

◆工作線程(wrk_thread):不斷處理請(qǐng)求,進(jìn)入狀態(tài)機(jī)。如果緩存沒有命中,還需要從后臺(tái)服務(wù)取過數(shù)據(jù),存入緩存并回復(fù)。然后把該連接通過管道轉(zhuǎn)給數(shù)據(jù)接受線程并睡去。

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

◆后臺(tái)服務(wù)器連接探測(cè)線程(vbp_wrk_poll_backend):針對(duì)不同的后臺(tái)服務(wù)器組進(jìn)行輪詢,檢查存活與否。

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

圖一:cache子進(jìn)程各個(gè)線程流程圖

圖一:cache子進(jìn)程各個(gè)線程流程圖#p#

2.負(fù)載均衡實(shí)現(xiàn)的分析

就目前分析來看,Cache子進(jìn)程的代碼實(shí)現(xiàn)部分主要由cache_main.c這個(gè)文件為主要脈絡(luò)的。Cache_main.c中將cache子進(jìn)程的各個(gè)線程一一初始化。

目前我所關(guān)注的重點(diǎn)在于wrk_thread部分,它是實(shí)現(xiàn)varnish負(fù)載均衡的主要內(nèi)容。

1)wrk_thread的作用:不斷處理請(qǐng)求,進(jìn)入狀態(tài)機(jī)。如果緩存沒有命中,還需要從后臺(tái)服務(wù)取過數(shù)據(jù),存入緩存并回復(fù)。然后把該連接通過管道轉(zhuǎn)給數(shù)據(jù)接受線程并sleep。

2)wrk_thread的工作流程:

圖二:cache子進(jìn)程中,wrk_thread線程工作流程

圖二:cache子進(jìn)程中,wrk_thread線程工作流程

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

Cache_pool.c文件中主要函數(shù)有:

static void

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

static void *

wrk_herder_thread(void *priv) :放牧進(jìn)程,用于產(chǎn)生工作線程池。線程不足時(shí)會(huì)增加線程;

static void *

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

static void

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

static void

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

static void *

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

責(zé)任編輯:佟健 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-23 00:03:18

全局負(fù)載均衡

2010-05-06 12:56:13

全局負(fù)載均衡

2021-09-14 08:44:11

負(fù)載均衡Bundle

2010-04-26 15:25:40

2010-05-10 16:46:23

負(fù)載均衡交換機(jī)

2010-04-28 16:18:19

負(fù)載均衡技術(shù)

2010-04-21 16:21:39

2017-07-03 08:08:25

負(fù)載均衡分類

2010-05-04 18:10:07

路由器負(fù)載均衡

2010-04-27 12:42:45

LVS負(fù)載均衡

2019-03-18 10:44:41

負(fù)載均衡DNSUDP

2021-04-21 14:56:28

負(fù)載均衡高并發(fā)優(yōu)化技術(shù)架構(gòu)

2011-12-02 22:51:46

Nginx負(fù)載均衡

2010-04-22 10:46:40

Lvs負(fù)載均衡故障負(fù)載均衡器

2018-11-07 10:12:37

2010-05-04 16:10:51

負(fù)載均衡算法

2010-05-07 14:27:16

IPVS負(fù)載均衡

2010-05-10 16:20:32

負(fù)載均衡策略

2012-07-31 09:25:42

nginx負(fù)載均衡反向代理

2013-04-22 11:29:14

Nginx
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久国产精品一区二区 | 天天干夜夜操 | 国产成人a亚洲精品 | 天天玩夜夜操 | 国产亚洲欧美日韩精品一区二区三区 | 欧美美女二区 | 免费成人高清在线视频 | 精品久久久久久亚洲综合网站 | 特黄色一级毛片 | 午夜影院在线免费观看视频 | 国产偷录叫床高潮录音 | 亚洲日本国产 | 91pao对白在线播放 | 欧美在线a | 亚洲欧美日韩精品久久亚洲区 | 黑人中文字幕一区二区三区 | 国产97色 | av福利网站 | 成人综合视频在线 | 国产精品日韩高清伦字幕搜索 | 在线中文字幕av | 欧美一区二区在线播放 | 欧美精品在线一区二区三区 | 亚洲欧美在线观看 | 日本黄色免费片 | 国产探花在线精品一区二区 | 区一区二在线观看 | 欧美亚洲第一区 | 亚洲国产成人av好男人在线观看 | 精品欧美一区二区三区免费观看 | 色免费看 | 精品一二 | 亚洲精品18 | 黄色精品 | 久久久久久久亚洲精品 | 精品久久国产 | 久久99精品久久久久 | 九九热免费观看 | 国产精品久久久久久久久大全 | 毛片免费观看视频 | av在线三级 |