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