描述
云查殺平臺(tái)以nginx作為反向代理服務(wù)器,作為安全終端與云查詢服務(wù)的橋梁。當(dāng)安全終端需要查詢黑文件時(shí),HTTP請(qǐng)求及其響應(yīng)都會(huì)經(jīng)過(guò)nginx,為了獲取并統(tǒng)計(jì)一天24小時(shí)查詢的黑文件數(shù)量,就得先截獲經(jīng)過(guò)nginx的HTTP響應(yīng),再做數(shù)據(jù)分析。截獲HTTP數(shù)據(jù)流有多種方法,為了簡(jiǎn)單高效,這里使用了掛接HTTP過(guò)濾模塊的方法,另外為了不影響nginx本身的IO處理,將HTTP響應(yīng)實(shí)體發(fā)送到另一個(gè)進(jìn)程即統(tǒng)計(jì)服務(wù),由統(tǒng)計(jì)服務(wù)來(lái)接收并分析HTTP響應(yīng),架構(gòu)如下圖
統(tǒng)計(jì)服務(wù)由1個(gè)接收線程和1個(gè)存儲(chǔ)線程構(gòu)成,其中接收線程負(fù)責(zé)接收從nginx過(guò)濾模塊發(fā)來(lái)的HTTP響應(yīng)實(shí)體,解析它并提取黑文件MD5,加入共享環(huán)形隊(duì)列;而存儲(chǔ)線程從共享環(huán)形隊(duì)列移出黑文件MD5,插入到臨時(shí)內(nèi)存映射文件,于每天定時(shí)同步到磁盤文件。
特點(diǎn)
這種架構(gòu)減少了nginx IO延遲,保證了nginx的穩(wěn)定高效運(yùn)行,從而不影響用戶的業(yè)務(wù)運(yùn)行;本地連接為非阻塞的,支持了統(tǒng)計(jì)服務(wù)的獨(dú)立運(yùn)行與升級(jí)。
實(shí)現(xiàn)
nginx過(guò)濾模塊
該流程運(yùn)行在nginx工作進(jìn)程。
由于nginx采用了異步IO機(jī)制,因此僅當(dāng)截獲到HTTP響應(yīng)實(shí)體也就是有數(shù)據(jù)經(jīng)過(guò)時(shí),才有后面的操作;若沒(méi)有數(shù)據(jù),則什么也不用做。這里每次發(fā)送前先判斷是否連接了統(tǒng)計(jì)服務(wù),是為了支持統(tǒng)計(jì)服務(wù)的獨(dú)立運(yùn)行與升級(jí),換句話說(shuō),不管統(tǒng)計(jì)服務(wù)是否運(yùn)行或崩潰,都不影響nginx的運(yùn)行。
統(tǒng)計(jì)服務(wù)
接收線程
這里的接收線程也就是主線程。
存儲(chǔ)線程
存儲(chǔ)線程為另一個(gè)工作線程。
同步文件定時(shí)器的時(shí)間間隔要比新建文件定時(shí)器的短,由于定時(shí)器到期的事件處理是一種異步執(zhí)行流,所以將它們當(dāng)做并行,與“從q頭移出黑文件MD5”操作畫在了同一水平方向。
posted on 2016-08-25 11:10
春秋十二月 閱讀(1115)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
Opensrc