2020-06-19 23:01:57 sunmedia 1299
? ? 一,、概述
????數(shù)據(jù)庫防火墻和一般的傳統(tǒng)數(shù)據(jù)庫安全設(shè)備不同,,它部署在應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,。業(yè)務(wù)系統(tǒng)巨大的流量將穿越數(shù)據(jù)庫防火墻,,數(shù)據(jù)庫防火墻任何的風(fēng)吹草動都會影響業(yè)務(wù)系統(tǒng)的正常運(yùn)行。數(shù)據(jù)庫防火墻投放市場之前,,不管數(shù)據(jù)庫防火墻的功能多寡,,都必須解決兩個基本問題:性能和可靠性。
????二,、性能
????性能主要考慮兩方面的影響:延遲和并發(fā)。
????1,、延遲
????延遲:業(yè)務(wù)操作從指令發(fā)出到結(jié)果返回之間消耗的時間,。
????一般來說,絕大部分客戶的oltp業(yè)務(wù)要求秒級響應(yīng),,這個秒級響應(yīng)包含了所有的業(yè)務(wù)處理,,包括:客戶端的處理(比如瀏覽器)延遲,業(yè)務(wù)網(wǎng)絡(luò)延遲,,應(yīng)用服務(wù)器處理延遲,,數(shù)據(jù)庫網(wǎng)絡(luò)延遲,數(shù)據(jù)庫處理延遲等,。對于數(shù)據(jù)庫防火墻來說,,應(yīng)用服務(wù)器處理延遲和數(shù)據(jù)庫處理延遲之間增加了一個數(shù)據(jù)庫防火墻處理延遲。
????我們來看看一般oltp系統(tǒng)的常規(guī)情況,,數(shù)據(jù)庫網(wǎng)絡(luò)延遲一般1ms之內(nèi),,數(shù)據(jù)庫處理延遲大部分在0.1ms10ms之間,少部分會在10ms100ms之間,,極少出現(xiàn)幾百ms以上的延遲,。為了簡化說明,,我們把數(shù)據(jù)庫網(wǎng)絡(luò)延遲標(biāo)定為1ms,每次數(shù)據(jù)庫響應(yīng)處理延遲時間標(biāo)定為2ms,,每筆業(yè)務(wù)平均由20條SQL語句構(gòu)成,,則每次延遲時間為3ms,每筆業(yè)務(wù)的響應(yīng)時間為60ms,,每秒鐘可以處理16.8筆業(yè)務(wù),。如果數(shù)據(jù)庫防火墻的處理延遲時間為1ms,則每次處理延遲增加為4ms,,總處理時間增加為80ms,,每秒鐘可以處理12.5筆業(yè)務(wù)。我們分三種不同的業(yè)務(wù)場景來看:獨(dú)占數(shù)據(jù)庫連接(無數(shù)據(jù)庫連接池),、數(shù)據(jù)庫連接池和短連接業(yè)務(wù),。大部分C/S應(yīng)用都獨(dú)占數(shù)據(jù)庫連接,大部分B/S應(yīng)用都采用數(shù)據(jù)庫連接池,,短連接的應(yīng)用非常少見,,只出現(xiàn)在極少數(shù)據(jù)庫處理的應(yīng)用中。
????1.1,、獨(dú)占數(shù)據(jù)庫連接
????獨(dú)占數(shù)據(jù)庫連接應(yīng)用中,,數(shù)據(jù)庫防火墻的接入在每次處理中增加1ms,整體響應(yīng)中增加了20ms,,也就是從1000ms增加到了1020ms,,這個延遲增量一般情況下不會對于業(yè)務(wù)體驗(yàn)造成任何影響。
????1.2,、數(shù)據(jù)庫連接池
????不同于獨(dú)占數(shù)據(jù)庫連接,,數(shù)據(jù)庫連接池為不同業(yè)務(wù)操作的共享單元。假設(shè)數(shù)據(jù)庫連接池?cái)?shù)量為200個,,冗余20%,,可用數(shù)量為160個。顯然,,引進(jìn)數(shù)據(jù)庫防火墻之后,,業(yè)務(wù)處理能力從16.8
* 160 =
2688/s下降為12.5*160=2000/s,吞吐量下降25.6%,。當(dāng)你需要比較2000筆/s更高吞吐量的時候,,數(shù)據(jù)庫防火墻的接入將帶來業(yè)務(wù)線的影響。在這種情況下,,你需要把數(shù)據(jù)庫連接池?cái)?shù)量至少增加26%,,也就是252個,這個時候數(shù)據(jù)庫連接池的處理能力將恢復(fù)到2688筆/s,,整體業(yè)務(wù)感知的影響也僅僅從1000ms增加到了1020ms,,基本可以被忽略,。
????1.3、短連接業(yè)務(wù)
????在短連接業(yè)務(wù)中,,數(shù)據(jù)庫連接消耗的時間將納入業(yè)務(wù)響應(yīng)時間,。以O(shè)racle數(shù)據(jù)庫為例子,一個數(shù)據(jù)庫連接的建立消耗時間在120ms200ms,,數(shù)據(jù)庫防火墻增加的每次1ms延遲和合計(jì)20ms延遲基本不會產(chǎn)生業(yè)務(wù)層面的影響,。
????1.4、數(shù)據(jù)庫響應(yīng)處理的影響
????在上面的討論中都假設(shè)了數(shù)據(jù)庫不會受到影響,,但是事實(shí)上數(shù)據(jù)庫防火墻的加入會到數(shù)據(jù)庫處理產(chǎn)生影響,,其影響等同于網(wǎng)絡(luò)速度下降。一般而言,,延遲造成的影響主要在于增加了數(shù)據(jù)被鎖定的時間,,從而會從根本上影響數(shù)據(jù)庫并發(fā)性。我們以簡單的update為例子:
????update customer set balance=500 where cust_id=10080;
????commit;
????可以看到cust_id=10080這一行的鎖定周期從3ms增加到了4ms,,鎖定周期增加了33.3%,,這個增加的鎖定時間會在一定時間影響數(shù)據(jù)庫的并發(fā)性。
????2,、并發(fā)性
????對于一個企業(yè)級數(shù)據(jù)庫,,幾千甚至幾萬個數(shù)據(jù)庫連接是很常見的,數(shù)據(jù)庫防火墻需要在處理高并發(fā)量的同時保持延遲時間的穩(wěn)定,。在現(xiàn)實(shí)場景中,,隨著業(yè)務(wù)并發(fā)程度的上升,響應(yīng)時間下跌甚至于非線性下跌都是很常見的事情,。我們在這里不討論如何實(shí)現(xiàn)高并發(fā),,只是說明一下并發(fā)性會嚴(yán)重影響響應(yīng)延遲。
????3,、性能延遲的可接受性
????從上面計(jì)算可以看到,絕大部分的業(yè)務(wù)應(yīng)用在數(shù)據(jù)庫防火墻增加1ms延遲時間不會對業(yè)務(wù)造成太大影響,。對于高度并發(fā)性或者響應(yīng)時間極為苛刻的業(yè)務(wù)應(yīng)用,,1ms延遲具有比較大的風(fēng)險,需要更低延遲的數(shù)據(jù)庫防火墻支持,,300us500us的延遲是一個相對合理的數(shù)值,。當(dāng)然如果你的網(wǎng)絡(luò)環(huán)境甚至已經(jīng)在多接入一個網(wǎng)絡(luò)交換機(jī)(延遲時間一般在100300us)都會對業(yè)務(wù)造成明顯影響的時候,顯然增加數(shù)據(jù)庫防火墻接入是不合適的,。
????三,、可靠性
????性能是一個復(fù)雜的問題,可靠性對于數(shù)據(jù)庫防火墻來說就是一個極為簡單的命題了,。由于數(shù)據(jù)庫防火墻部署在應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,,數(shù)據(jù)庫防火墻的任何故障顯然會導(dǎo)致業(yè)務(wù)操作失敗,,在數(shù)據(jù)庫防火墻無法工作的時候?qū)е滤袠I(yè)務(wù)中斷。
????相信任何用戶在安全和業(yè)務(wù)保障之間都會優(yōu)先選擇業(yè)務(wù)保障而暫時放棄安全,?;谶@個考慮,一個很樸素的需求就是:在數(shù)據(jù)庫防火墻出現(xiàn)任何故障,,包括軟件故障,,硬件故障等,依然需要保障業(yè)務(wù)運(yùn)行不要被中斷和影響,。
????1,、bypass
????當(dāng)防火墻軟件或者硬件故障的時候,可以自適應(yīng)降級成網(wǎng)絡(luò)通路設(shè)備,,保證業(yè)務(wù)運(yùn)行不會受到防火墻軟件或者硬件故障的影響,。
????2、可靠性保持
????數(shù)據(jù)庫網(wǎng)絡(luò)往往具有很高的冗余措施,,數(shù)據(jù)庫防火墻的接入要求不會改變原有網(wǎng)絡(luò)的冗余結(jié)構(gòu),,保持原有網(wǎng)絡(luò)的可靠性。
????四,、總結(jié)
????數(shù)據(jù)庫防火墻商業(yè)化需要兩個基本前提:可以接受的性能和可以接受可靠性保障,,在這兩個基本前提解決之前,任何數(shù)據(jù)庫防火墻產(chǎn)品都只能是實(shí)驗(yàn)室產(chǎn)品而無法投放市場,。
????從性能的角度看,,絕大部分情況下1ms以下的延遲都可以接受,對于高并發(fā)的復(fù)雜業(yè)務(wù)或者響應(yīng)苛刻業(yè)務(wù)會需要更高的延遲性能,,要求在500us以下,。?
????