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