新四季網

一種基於NGINX+LUA的安全加速中間件實現方法及裝置與流程

2023-05-28 15:33:31


本發明涉及基於NGINX+LUA的安全加速中間件領域。



背景技術:

目前的單臺WEB(網站)伺服器受限於後端動態腳本的運行效率,當大規模訪問量或DDOS(分布式拒絕服務)攻擊湧入時,伺服器很容易當機。現有技術一般是以一臺或多臺反向代理伺服器來提供加速或安全過濾功能,需要較多的硬體資源,本發明則是在現有的NGINX(一種高性能的網站伺服器)伺服器上用LUA(一種小巧的腳本語言)進行擴展,合理利用現有資源,對服務接口進行緩存加速,有效提升單臺WEB伺服器的性能及安全性,能起到重要的安全加速作用。



技術實現要素:

本發明所要解決的技術問題是提供一種基於NGINX+LUA的安全加速中間件實現方法及裝置,目的在於提高單臺伺服器的安全性,加速服務接口獲取到的數據的調用速度。

本發明解決上述技術問題的技術方案如下:

一種基於NGINX+LUA的安全加速中間件實現方法,所述方法包括以下步驟:

S1,在伺服器接收到用戶的訪問請求時,先從共享內存中獲取配置信息,若存在配置信息,則根據配置信息篩選該訪問請求能否放行;若不存在配置信息,則訪問動態服務接口獲取配置信息並緩存到共享內存,然後根據配置信息篩選該訪問請求能否放行,若篩選通過能放行,則進入S2,若篩選不通過不能放行,則返回報錯信息;

S2,根據配置信息檢查用戶請求訪問的服務接口是否為可緩存服務,若是,則進入S3,若否,則直接調用對應動態服務接口獲取數據返回給用戶;

S3,根據用戶的訪問請求到共享內存緩存中查找用戶請求訪問的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,若不存在對應的緩存數據,進入S4;

S4,根據用戶的訪問請求到REDIS(一種資料庫)集群中查找用戶請求訪問的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,並將對應的緩存數據存入共享內存;若不存在對應的緩存數據,則調用對應動態服務接口處理,並將獲取到的數據作為緩存數據存入REDIS集群和共享內存。

本發明的有益效果是:(1)在伺服器接到訪問請求調用動態服務接口前,先進行安全過濾,再查找對應的緩存數據,使可被緩存的動態服務接口獲得的數據能被快速調用而不用重新調用動態服務接口,伺服器安全性和處理速度都能得到提升;(2)共享內存中緩存數據有效時間較短,是使用頻率最高的緩存數據,REDIS集群中緩存數據有效時間比共享內存長,是使用頻率較高的緩存數據,分時間級別緩存數據既能減小伺服器的資源佔用,又能有效提升伺服器的處理速度;(3)配置信息首先由動態服務接口獲取後緩存在共享內存中,也是一種緩存數據,有效時間較短,一段時間後會自動被清理,因此對配置信息修改之後能在較短時間被動態服務接口重新獲取並更新到共享內存。

在上述技術方案的基礎上,本發明還可以做如下改進:

進一步,所述S1中「根據配置信息篩選該訪問請求能否放行」的步驟包括:

S11,根據配置信息檢查用戶IP位址(網絡之間互連的協議地址)黑名單,若該訪問請求的用戶的IP位址屬於用戶IP位址黑名單,則不放行並直接返回報錯信息;若該用戶不屬於黑名單,則進入S12;

S12,根據配置信息檢查URL(統一資源定位符,是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示)正則規則黑名單,若該訪問請求的URL屬於URL正則規則黑名單,則不放行並直接返回報錯信息;若該URL不屬於黑名單,則放行並進入S2。

採用上述進一步方案的有益效果是:既支持過濾用戶IP位址黑名單,也支持過濾URL正則規則黑名單,能抵擋大多數不安全的訪問,提升伺服器的安全性能,也節約了伺服器的資源,提升伺服器的處理速度。

進一步,所述S4中具體包括以下步驟:

S41,檢查REDIS集群中是否存在該訪問請求的服務接口對應的緩存數據,若是,進入S42,若否,進入S44;

S42,檢查對應緩存數據的緩存因子與用戶請求訪問的服務接口的緩存因子是否相同,若緩存因子不同,則進入S44,若緩存因子相同,則進入S43;

S43,檢查對應緩存數據的時間戳判斷該緩存數據是有效還是過期,若該緩存數據有效,則將緩存數據返回給用戶並存入到共享內存;若該緩存數據過期,則進入S44;

S44,檢查該訪問請求的服務接口是否被鎖定,若是,則將REDIS集群中過期的緩存數據返回給用戶;若否,則鎖定該服務接口,並進入S45;

S45,執行動態服務接口獲取對應的數據,若動態服務接口獲取數據成功,則將對應的數據返回給用戶並存入REDIS集群和共享內存,同時解鎖該服務接口,若動態服務接口獲取數據不成功,則直接返回報錯信息並解鎖該服務接口。

採用上述進一步方案的有益效果是:(1)對REDIS伺服器中的緩存數據加上了緩存因子和緩存時間戳,通過緩存因子能批量控制緩存數據的有效性,只要服務接口的緩存因子發生變化,對應的REDIS伺服器中的緩存數據會因為緩存因子不一致而失效,此時會重新調用動態服務接口獲取數據,並將數據和新的緩存因子更新到REDIS伺服器的緩存中;(2)緩存時間戳設置的REDIS集群中的緩存數據的有效時間大於共享內存中數據的有效時間,但小於REDIS集群中數據本身的緩存時間,在緩存時間戳設定的時間過期後重新調用動態服務接口去更新數據並緩存,協調了數據時效性和伺服器的處理速度;(3)REDIS集群中某一服務接口對應的緩存數據時間戳過期之後,如果有訪問請求該服務接口對應的緩存數據,則將該服務接口鎖定並調用動態服務接口去獲取數據,鎖定該服務接口能避免在調用動態服務接口獲取數據的過程中,其它訪問也請求該服務接口對應的緩存數據,導致重複調用動態服務接口獲取數據,降低了伺服器性能。鎖定服務接口之後,在調用動態服務接口獲取數據的過程中,先將過期緩存數據發送給客戶,在數據獲取成功並緩存到REDIS集群和共享內存中之後,解鎖該服務接口,能有效的提高伺服器的處理效率。

進一步,所述S1中的配置信息包括:各服務接口是否為可緩存服務、共享內存中緩存數據的有效時間、各服務接口的緩存因子、REDIS集群中緩存數據的緩存因子、REDIS集群中緩存數據的有效時間、用戶IP位址黑名單、URL正則規則黑名單。

採用上述進一步方案的有益效果是:各種與安全過濾和緩存相關的配置都存在配置信息中,可以靈活配置,根據情況自由調整伺服器的處理方式,平衡和優化伺服器的安全性和處理速度。

進一步,所述方法還包括:

成功獲取共享內存或REDIS集群中的緩存數據返回給用戶時,將獲取成功的信息發送到日誌伺服器進行統計記錄的步驟;

對訪問請求進行用戶IP位址黑名單檢查或URL正則規則黑名單檢查後,將檢查結果信息發送到日誌伺服器進行統計記錄的步驟。

採用上述進一步方案的有益效果是:對緩存數據調用信息和訪問過濾信息進行統計記錄,能為以後分析服務數據熱門度和制定新的安全防護策略提供數據支持,有助於優化伺服器處理性能。

一種基於NGINX+LUA的安全加速中間件裝置,所述裝置包括:

安全防護模塊,用於在伺服器接收到用戶的訪問請求時,先從共享內存中獲取配置信息,若存在配置信息,則根據配置信息篩選該訪問請求能否放行;若不存在配置信息,則訪問動態服務接口獲取配置信息並緩存到共享內存,然後根據配置信息篩選該訪問請求能否放行,若篩選通過能放行,則進入服務接口加速模塊,若篩選不通過不能放行,則返回報錯信息;

服務接口加速模塊,用於根據配置信息檢查用戶請求訪問的服務接口是否為可緩存服務,若是,則進入共享內存緩存模塊,若否,則直接調用對應動態服務接口獲取數據返回給用戶;

共享內存緩存模塊,用於根據用戶的訪問請求在共享內存中查找訪問請求的服務接口對應的緩存數據,若存在對應的緩存數據,則將緩存數據返回給用戶,若不存在對應的緩存數據,進入REDIS集群緩存模塊;

REDIS集群緩存模塊,用於根據用戶的訪問請求在REDIS集群中查找訪問請求的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,並將對應的緩存數據存入共享內存;若不存在對應的緩存數據,則調用對應動態服務接口處理,並將獲取到的數據作為緩存數據存入REDIS集群和共享內存。

本發明的有益效果是:(1)在伺服器接到訪問請求調用動態服務接口前,先進行安全過濾,再查找對應的緩存數據,使可被緩存的動態服務接口獲得數據能被快速調用而不用重新調用動態服務接口,伺服器安全性和處理速度都能得到提升;(2)共享內存中緩存數據有效時間較短,是使用頻率最高的緩存數據,REDIS集群中緩存數據有效時間比共享內存長,是使用頻率較高的緩存數據,分時間級別緩存數據既能減小伺服器的資源佔用,又能有效提升伺服器的處理速度;(3)配置信息首先由動態服務接口獲取後緩存在共享內存中,也是一種緩存數據,有效時間較短,一段時間後會自動被清理,因此對配置信息修改之後能在較短時間被動態服務接口重新獲取並更新到共享內存。

在上述技術方案的基礎上,本發明還可以做如下改進:

進一步,所述安全防護模塊中「根據配置信息篩選該訪問請求能否放行」的過程包括:

根據配置信息檢查用戶IP位址黑名單,若該訪問請求的用戶的IP位址屬於用戶IP位址黑名單,則不放行並直接返回報錯信息;若該用戶不屬於黑名單,則進行URL正則規則黑名單檢查;

根據配置信息檢查URL正則規則黑名單,若該訪問請求的URL屬於URL正則規則黑名單,則不放行並直接返回報錯信息;若該URL不屬於黑名單,則放行並進入服務接口加速模塊。

採用上述進一步方案的有益效果是:既支持過濾用戶IP位址黑名單,也支持過濾URL正則規則黑名單,能抵擋大多數不安全的訪問,提升伺服器的安全性能,也節約了伺服器的資源,提升伺服器的處理速度。

進一步,所述REDIS集群緩存模塊具體包括:

緩存數據檢查模塊,用於檢查REDIS集群中是否存在訪問請求的服務接口對應的緩存數據,若是,進入緩存因子檢查模塊,若否,進入服務接口鎖定模塊;

緩存因子檢查模塊,用於檢查對應緩存數據的緩存因子與用戶請求訪問的服務接口的緩存因子是否相同,若緩存因子不同,則進入服務接口鎖定模塊,若緩存因子相同,則進入緩存有效時間檢查模塊;

緩存有效時間檢查模塊,用於檢查對應緩存數據的時間戳判斷該緩存是有效還是過期,若該緩存數據有效,則將緩存數據返回給用戶並存入到共享內存;若該緩存數據過期,則進入動態服務接口執行模塊;

服務接口鎖定模塊,用於檢查該訪問請求的服務接口是否被鎖定,若是,則將REDIS集群中過期的緩存數據返回給用戶;若否,則鎖定該服務接口,並進入動態服務接口執行模塊;

動態服務接口執行模塊,用於執行動態服務接口獲取對應的數據,若動態服務接口獲取數據成功,則將對應的數據返回給用戶並存入REDIS集群和共享內存,同時解鎖該服務接口,若動態服務接口獲取數據不成功,則直接返回報錯信息並解鎖該服務接口。

採用上述進一步方案的有益效果是:(1)對REDIS伺服器中的緩存數據加上了緩存因子和緩存時間戳,通過緩存因子能批量控制緩存數據的有效性,只要服務接口的緩存因子發生變化,對應的REDIS伺服器中的緩存數據會因為緩存因子不一致而失效,此時會重新調用動態服務接口獲取數據,並將數據和新的緩存因子更新到REDIS伺服器的緩存中;(2)緩存時間戳設置的REDIS集群中的緩存數據的有效時間大於共享內存中數據的有效時間,但小於REDIS集群中數據本身的緩存時間,在緩存時間戳設定的時間過期後重新調用動態服務接口去更新數據並緩存,協調了數據時效性和伺服器的處理速度;(3)REDIS集群中某一服務接口對應的緩存數據時間戳過期之後,如果有訪問請求該服務接口對應的緩存數據,則將該服務接口鎖定並調用動態服務接口去獲取數據,鎖定該服務接口能避免在調用動態服務接口獲取數據的過程中,其它訪問也請求該服務接口對應的緩存數據,導致重複調用動態服務接口獲取數據,降低了伺服器性能。鎖定服務接口之後,在調用動態服務接口獲取數據的過程中,先將過期緩存數據發送給客戶,在數據獲取成功並緩存到REDIS集群和共享內存中之後,解鎖該服務接口,能有效的提高伺服器的處理效率。

進一步,所述裝置還包括配置管理模塊,用於設置所述配置信息,所述配置信息包括:各服務接口是否為可緩存服務、共享內存中緩存數據的有效時間、各服務接口的緩存因子、REDIS集群中緩存數據的緩存因子、REDIS集群中緩存數據的有效時間、用戶IP位址黑名單、URL正則規則黑名單。

採用上述進一步方案的有益效果是:各種與安全過濾和緩存相關的配置都存在配置信息中,可以靈活配置,根據情況自由調整伺服器的處理方式,平衡和優化伺服器的安全性和處理速度。

進一步,所述裝置還包括:

緩存命中統計模塊,用於在成功獲取共享內存或REDIS集群中的緩存數據返回給用戶時,將獲取成功的信息發送到日誌伺服器進行統計記錄;

安全過濾統計模塊,用於對訪問請求進行用戶IP位址黑名單檢查或URL正則規則黑名單檢查後,將檢查結果信息發送到日誌伺服器進行統計記錄。

採用上述進一步方案的有益效果是:對緩存數據調用信息和訪問過濾信息進行統計記錄,能為以後分析服務數據熱門度和制定新的安全防護策略提供數據支持,有助於優化伺服器處理性能。

附圖說明

圖1為本發明實施例所述的基於NGINX+LUA的安全加速中間件實現方法的基本流程圖。

圖2為本發明實施例所述的基於NGINX+LUA的安全加速中間件實現方法的REDIS緩存數據處理方法流程圖。

圖3為本發明實施例所述的基於NGINX+LUA的安全加速中間件裝置的結構圖。

具體實施方式

以下結合附圖對本發明的原理和特徵進行描述,所舉實例只用於解釋本發明,並非用於限定本發明的範圍。

實施例1

如圖1所示,一種基於NGINX+LUA的安全加速中間件實現方法,包括以下步驟:

S1,在伺服器接收到用戶的訪問請求時,先從共享內存中獲取配置信息,若存在配置信息,則根據配置信息篩選該訪問請求能否放行;若不存在配置信息,則訪問動態服務接口獲取配置信息並緩存到共享內存,然後根據配置信息篩選該訪問請求能否放行,若篩選通過能放行,則進入S2,若篩選不通過不能放行,則返回報錯信息;

S2,根據配置信息檢查用戶請求訪問的服務接口是否為可緩存服務,若是,則進入S3,若否,則直接調用對應動態服務接口獲取數據返回給用戶;

S3,根據用戶的訪問請求到共享內存緩存中查找用戶請求訪問的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,若不存在對應的緩存數據,進入S4;

S4,根據用戶的訪問請求到REDIS集群中查找用戶請求訪問的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,並將對應的緩存數據存入共享內存;若不存在對應的緩存數據,則調用對應動態服務接口處理,並將獲取到的數據作為緩存數據存入REDIS集群和共享內存。

具體地,共享內存處理速度快,但容量較小,所以作為第一級緩存使用,首先就到共享內存中查找緩存數據,一般設置的數據過期時間會較短,避免長時間佔用資源,所以存儲的都是使用頻率非常高的緩存數據。

REDIS集群可以做擴展,容量比較大,所以作為第二級緩存使用,共享內存中找不到對應的緩存數據時再去REDIS集群中查找對應的緩存數據,一般設置的數據過期時間比共享內存中的過期時間長,可以合理使用資源,存儲的是使用頻率比較高的緩存數據。

初始情況下,共享內存和REDIS集群中都沒有緩存數據,調用了動態服務接口獲取數據後,會在數據中加入設定好的過期時間信息,並緩存到共享內存和REDIS集群中。

本實施例在伺服器接到訪問請求調用動態服務接口前,先進行安全過濾,再查找對應的緩存數據,使可被緩存的動態服務接口獲得的數據能被快速調用而不用重新調用動態服務接口,伺服器安全性和處理速度都能得到提升。

共享內存中緩存數據有效時間較短,是使用頻率最高的緩存數據,REDIS集群中緩存數據有效時間比共享內存長,是使用頻率較高的緩存數據,分時間級別緩存數據既能減小伺服器的資源佔用,又能有效提升伺服器的處理速度。

配置信息首先由動態服務接口獲取後緩存在共享內存中,也是一種緩存數據,有效時間較短,一段時間後會自動被清理,因此對配置信息修改之後能在較短時間被動態服務接口重新獲取並更新到共享內存。

進一步,所述S1中「根據配置信息篩選該訪問請求能否放行」的步驟包括:

S11,根據配置信息檢查用戶IP位址黑名單,若該訪問請求的用戶的IP位址屬於用戶IP位址黑名單,則不放行並直接返回報錯信息;若該用戶不屬於黑名單,則進入S12;

S12,根據配置信息檢查URL正則規則黑名單,若該訪問請求的URL屬於URL正則規則黑名單,則不放行並直接返回報錯信息;若該URL不屬於黑名單,則放行並進入S2。

該改進中,既支持過濾用戶IP位址黑名單,也支持過濾URL正則規則黑名單,能抵擋大多數不安全的訪問,提升伺服器的安全性能,也節約了伺服器的資源,提升伺服器的處理速度。

進一步,如圖2所示,所述S4中具體包括以下步驟:

S41,檢查REDIS集群中是否存在該訪問請求的服務接口對應的緩存數據,若是,進入S42,若否,進入S44;

S42,檢查對應緩存數據的緩存因子與用戶請求訪問的服務接口的緩存因子是否相同,若緩存因子不同,則進入S44,若緩存因子相同,則進入S43;

S43,檢查對應緩存數據的時間戳判斷該緩存數據是有效還是過期,若該緩存數據有效,則將緩存數據返回給用戶並存入到共享內存;若該緩存數據過期,則進入S44;

S44,檢查該訪問請求的服務接口是否被鎖定,若是,則將REDIS集群中過期的緩存數據返回給用戶;若否,則鎖定該服務接口,並進入S45;

S45,執行動態服務接口獲取對應的數據,若動態服務接口獲取數據成功,則將對應的數據返回給用戶並存入REDIS集群和共享內存,同時解鎖該服務接口,若動態服務接口獲取數據不成功,則直接返回報錯信息並解鎖該服務接口。

具體地,REDIS集群中緩存數據的結構為:緩存因子+過期時間戳+原始數據,對於可緩存的服務接口,動態服務接口調用數據之後,首次將數據緩存至REDIS集群中時,會給數據添加過期時間戳和緩存因子;以後每次調用該緩存數據就會校驗緩存因子和過期時間戳,如果過期時間戳的過期時間到了,則會重新調用動態服務接口更新數據,同時過期時間戳也會被更新。

如果某部分服務接口對應的數據需要全部過期失效,則可以通過修改該部分服務接口的緩存因子,這樣該部分服務接口的緩存因子就跟REDIS集群中對應數據的緩存因子不一致,會重新調用動態服務接口獲取數據,並將新的緩存因子和過期時間戳封裝到數據上,以便下次調用。

該改進中,對REDIS伺服器中的緩存數據加上了緩存因子和緩存時間戳,通過緩存因子能批量控制緩存數據的有效性,只要服務接口的緩存因子發生變化,對應的REDIS伺服器中的緩存數據會因為緩存因子不一致而失效,此時會重新調用動態服務接口獲取數據,並將數據和新的緩存因子更新到REDIS伺服器的緩存中。

緩存時間戳設置的REDIS集群中的緩存數據的有效時間大於共享內存中數據的有效時間,但小於REDIS集群中數據本身的緩存時間,在緩存時間戳設定的時間過期後重新調用動態服務接口去更新數據並緩存,協調了數據時效性和伺服器的處理速度。

REDIS集群中某一服務接口對應的緩存數據時間戳過期之後,如果有訪問請求該服務接口對應的緩存數據,則將該服務接口鎖定並調用動態服務接口去獲取數據,鎖定該服務接口能避免在調用動態服務接口獲取數據的過程中,其它訪問也請求該服務接口對應的緩存數據,導致重複調用動態服務接口獲取數據,降低了伺服器性能。鎖定服務接口之後,在調用動態服務接口獲取數據的過程中,先將過期緩存數據發送給客戶,在數據獲取成功並緩存到REDIS集群和共享內存中之後,解鎖該服務接口,能有效的提高伺服器的處理效率。

進一步,所述S1中的配置信息包括:各服務接口是否為可緩存服務、共享內存中緩存數據的有效時間、各服務接口的緩存因子、REDIS集群中緩存數據的緩存因子、REDIS集群中緩存數據的有效時間、用戶IP位址黑名單、URL正則規則黑名單。

具體地,可以採用專門的配置管理伺服器來設置該配置信息,或在本機上建立目錄保存配置信息文件,需要修改時直接在本機修改該配置信息文件。

該改進中,各種與安全過濾和緩存相關的配置都存在配置信息中,可以靈活配置,根據情況自由調整伺服器的處理方式,平衡和優化伺服器的安全性和處理速度。

進一步,所述方法還包括:

成功獲取共享內存或REDIS集群中的緩存數據返回給用戶時,將獲取成功的信息發送到日誌伺服器進行統計記錄的步驟;

對訪問請求進行用戶IP位址黑名單檢查或URL正則規則黑名單檢查後,將檢查結果信息發送到日誌伺服器進行統計記錄的步驟。

該改進中,對緩存數據調用信息和訪問過濾信息進行統計記錄,能為以後分析服務數據熱門度和制定新的安全防護策略提供數據支持,有助於優化伺服器處理性能。

實施例2

如圖3所示,一種基於NGINX+LUA的安全加速中間件裝置,包括:

安全防護模塊,用於在伺服器接收到用戶的訪問請求時,先從共享內存中獲取配置信息,若存在配置信息,則根據配置信息篩選該訪問請求能否放行;若不存在配置信息,則訪問動態服務接口獲取配置信息並緩存到共享內存,然後根據配置信息篩選該訪問請求能否放行,若篩選通過能放行,則進入服務接口加速模塊,若篩選不通過不能放行,則返回報錯信息;

服務接口加速模塊,用於根據配置信息檢查用戶請求訪問的服務接口是否為可緩存服務,若是,則進入共享內存緩存模塊,若否,則直接調用對應動態服務接口獲取數據返回給用戶;

共享內存緩存模塊,用於根據用戶的訪問請求在共享內存中查找訪問請求的服務接口對應的緩存數據,若存在對應的緩存數據,則將緩存數據返回給用戶,若不存在對應的緩存數據,進入REDIS集群緩存模塊;

REDIS集群緩存模塊,用於根據用戶的訪問請求在REDIS集群中查找訪問請求的服務接口對應的緩存數據,若存在對應的緩存數據,則將對應的緩存數據返回給用戶,並將對應的緩存數據存入共享內存;若不存在對應的緩存數據,則調用對應動態服務接口處理,並將獲取到的數據作為緩存數據存入REDIS集群和共享內存。

具體地,共享內存處理速度快,但容量較小,所以作為第一級緩存使用,首先就到共享內存中查找緩存數據,一般設置的數據過期時間會較短,避免長時間佔用資源,所以存儲的都是使用頻率非常高的緩存數據。

REDIS集群可以做擴展,容量比較大,所以作為第二級緩存使用,共享內存中找不到對應的緩存數據時再去REDIS集群中查找對應的緩存數據,一般設置的數據過期時間比共享內存中的過期時間長,可以合理使用資源,存儲的是使用頻率比較高的緩存數據。

初始情況下,共享內存和REDIS集群中都沒有緩存數據,調用了動態服務接口獲取數據後,會在數據中加入設定好的過期時間信息,並緩存到共享內存和REDIS集群中。

本實施例在伺服器接到訪問請求調用動態服務接口前,先進行安全過濾,再查找對應的緩存數據,使可被緩存的動態服務接口獲得數據能被快速調用而不用重新調用動態服務接口,伺服器安全性和處理速度都能得到提升。

共享內存中緩存數據有效時間較短,是使用頻率最高的緩存數據,REDIS集群中緩存數據有效時間比共享內存長,是使用頻率較高的緩存數據,分時間級別緩存數據既能減小伺服器的資源佔用,又能有效提升伺服器的處理速度。

配置信息首先由動態服務接口獲取後緩存在共享內存中,也是一種緩存數據,有效時間較短,一段時間後會自動被清理,因此對配置信息修改之後能在較短時間被動態服務接口重新獲取並更新到共享內存。

進一步,所述安全防護模塊中「根據配置信息篩選該訪問請求能否放行」的過程包括:

根據配置信息檢查用戶IP位址黑名單,若該訪問請求的用戶的IP位址屬於用戶IP位址黑名單,則不放行並直接返回報錯信息;若該用戶不屬於黑名單,則進行URL正則規則黑名單檢查;

根據配置信息檢查URL正則規則黑名單,若該訪問請求的URL屬於URL正則規則黑名單,則不放行並直接返回報錯信息;若該URL不屬於黑名單,則放行並進入服務接口加速模塊。

該改進中,既支持過濾用戶IP位址黑名單,也支持過濾URL正則規則黑名單,能抵擋大多數不安全的訪問,提升伺服器的安全性能,也節約了伺服器的資源,提升伺服器的處理速度。

進一步,如圖3所示,所述REDIS集群緩存模塊具體包括:

緩存數據檢查模塊,用於檢查REDIS集群中是否存在訪問請求的服務接口對應的緩存數據,若是,進入緩存因子檢查模塊,若否,進入服務接口鎖定模塊;

緩存因子檢查模塊,用於檢查對應緩存數據的緩存因子與用戶請求訪問的服務接口的緩存因子是否相同,若緩存因子不同,則進入服務接口鎖定模塊,若緩存因子相同,則進入緩存有效時間檢查模塊;

緩存有效時間檢查模塊,用於檢查對應緩存數據的時間戳判斷該緩存是有效還是過期,若該緩存數據有效,則將緩存數據返回給用戶並存入到共享內存;若該緩存數據過期,則進入動態服務接口執行模塊;

服務接口鎖定模塊,用於檢查該訪問請求的服務接口是否被鎖定,若是,則將REDIS集群中過期的緩存數據返回給用戶;若否,則鎖定該服務接口,並進入動態服務接口執行模塊;

動態服務接口執行模塊,用於執行動態服務接口獲取對應的數據,若動態服務接口獲取數據成功,則將對應的數據返回給用戶並存入REDIS集群和共享內存,同時解鎖該服務接口,若動態服務接口獲取數據不成功,則直接返回報錯信息並解鎖該服務接口。

具體地,REDIS集群中緩存數據的結構為:緩存因子+過期時間戳+原始數據,對於可緩存的服務接口,動態服務接口調用數據之後,首次將數據緩存至REDIS集群中時,會給數據添加過期時間戳和緩存因子;以後每次調用該緩存數據就會校驗緩存因子和過期時間戳,如果過期時間戳的過期時間到了,則會重新調用動態服務接口更新數據,同時過期時間戳也會被更新。

如果某部分服務接口對應的數據需要全部過期失效,則可以通過修改該部分服務接口的緩存因子,這樣該部分服務接口的緩存因子就跟REDIS集群中對應數據的緩存因子不一致,會重新調用動態服務接口獲取數據,並將新的緩存因子和過期時間戳封裝到數據上,以便下次調用。

該改進中,對REDIS伺服器中的緩存數據加上了緩存因子和緩存時間戳,通過緩存因子能批量控制緩存數據的有效性,只要服務接口的緩存因子發生變化,對應的REDIS伺服器中的緩存數據會因為緩存因子不一致而失效,此時會重新調用動態服務接口獲取數據,並將數據和新的緩存因子更新到REDIS伺服器的緩存中。

緩存時間戳設置的REDIS集群中的緩存數據的有效時間大於共享內存中數據的有效時間,但小於REDIS集群中數據本身的緩存時間,在緩存時間戳設定的時間過期後重新調用動態服務接口去更新數據並緩存,協調了數據時效性和伺服器的處理速度。

REDIS集群中某一服務接口對應的緩存數據時間戳過期之後,如果有訪問請求該服務接口對應的緩存數據,則將該服務接口鎖定並調用動態服務接口去獲取數據,鎖定該服務接口能避免在調用動態服務接口獲取數據的過程中,其它訪問也請求該服務接口對應的緩存數據,導致重複調用動態服務接口獲取數據,降低了伺服器性能。鎖定服務接口之後,在調用動態服務接口獲取數據的過程中,先將過期緩存數據發送給客戶,在數據獲取成功並緩存到REDIS集群和共享內存中之後,解鎖該服務接口,能有效的提高伺服器的處理效率。

進一步,如圖3所示,所述裝置還包括配置管理模塊,用於設置所述配置信息,所述配置信息包括:各服務接口是否為可緩存服務、共享內存中緩存數據的有效時間、各服務接口的緩存因子、REDIS集群中緩存數據的緩存因子、REDIS集群中緩存數據的有效時間、用戶IP位址黑名單、URL正則規則黑名單。

具體地,可以採用專門的配置管理伺服器來設置該配置信息,或在本機上建立目錄保存配置信息文件,需要修改時直接在本機修改該配置信息文件。

該改進中,各種與安全過濾和緩存相關的配置都存在配置信息中,可以靈活配置,根據情況自由調整伺服器的處理方式,平衡和優化伺服器的安全性和處理速度。

進一步,如圖3所示,所述裝置還包括:

緩存命中統計模塊,用於在成功獲取共享內存或REDIS集群中的緩存數據返回給用戶時,將獲取成功的信息發送到日誌伺服器進行統計記錄;

安全過濾統計模塊,用於對訪問請求進行用戶IP位址黑名單檢查或URL正則規則黑名單檢查後,將檢查結果信息發送到日誌伺服器進行統計記錄。

該改進中,對緩存數據調用信息和訪問過濾信息進行統計記錄,能為以後分析服務數據熱門度和制定新的安全防護策略提供數據支持,有助於優化伺服器處理性能。

在本說明書的描述中,參考術語「實施例」、「示例」、「具體示例」、或「一些示例」等的描述意指結合該實施例或示例描述的具體方法、裝置或者特點包含於本發明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特徵、方法、裝置或者特點可以在任一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情況下,本領域的技術人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特徵進行結合和組合。

以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀