論數(shù)據(jù)庫防火墻的自我修養(yǎng)之二丨高性能和可擴(kuò)縮

上周,我們開始討論數(shù)據(jù)庫防火墻的“自我修養(yǎng)”。作為一個(gè)技術(shù)人,對(duì)于文字的造詣遠(yuǎn)不及對(duì)代碼的掌控,筆者不擅長(zhǎng)用華麗的辭藻表達(dá)數(shù)據(jù)庫防火墻所背負(fù)的重任,在大部分人眼中,它只是一個(gè)冰冷的盒子,但筆者依然希望依靠有限的語言能力,用技術(shù)人的思維把這樣一個(gè)盒子的自我進(jìn)階之路講給你們聽。

實(shí)現(xiàn)了高可用性,解決了最基本的能不能串接部署的問題,數(shù)據(jù)庫防火墻的“人生”可以說成功了一小半,下一個(gè)人生挑戰(zhàn)隨之而來:高性能和可擴(kuò)縮性。

在這里,我們還是有必要先介紹一下數(shù)據(jù)庫防火墻和傳統(tǒng)網(wǎng)絡(luò)防火墻的根本性差異,關(guān)于深度協(xié)議解析和內(nèi)容分析的復(fù)雜性挑戰(zhàn)

傳統(tǒng)網(wǎng)絡(luò)防火墻:通常只分析網(wǎng)絡(luò)層的包頭和部分協(xié)議特征,不會(huì)對(duì)通訊包進(jìn)行深度分析,一般不會(huì)對(duì)應(yīng)答包進(jìn)行分析。

數(shù)據(jù)庫防火墻:需要對(duì)數(shù)據(jù)庫通訊協(xié)議的請(qǐng)求包和應(yīng)答包(雙向包)進(jìn)行深度分析:

1、對(duì)于請(qǐng)求包,需要解析出包中的SQL語句、參數(shù)化語句、參數(shù)值、跟蹤語句游標(biāo)。

2、對(duì)于應(yīng)答包,需要解析出返回字段信息、結(jié)果集、應(yīng)答信息等。

3、對(duì)于SQL語句,需要進(jìn)行詞法和語法分析(下一篇文章會(huì)介紹為什么需要進(jìn)行語法分析,而不是簡(jiǎn)單的關(guān)鍵詞匹配)。

4、對(duì)于參數(shù)值,和結(jié)果集,需要進(jìn)行格式轉(zhuǎn)換,并根據(jù)策略進(jìn)行必要的內(nèi)容過濾。

很明顯,二者對(duì)通訊包的處理工作量存在很大差異。面對(duì)這樣的工作強(qiáng)度,我們必須賦予數(shù)據(jù)庫防火墻一顆強(qiáng)大的“心”,對(duì)其進(jìn)行專門的處理邏輯優(yōu)化和性能優(yōu)化,能夠?qū)崿F(xiàn)低延遲,保證數(shù)據(jù)庫操作的高吞吐量要求。

核心業(yè)務(wù)數(shù)據(jù)庫的高吞吐量和擴(kuò)縮性挑戰(zhàn)

在以銀行、保險(xiǎn)、電信為代表的大型企業(yè),以稅務(wù)、海關(guān)、航空為代表的行業(yè),和以快遞業(yè)為代表的新興領(lǐng)域中,相比大規(guī)模的WEB應(yīng)用服務(wù)器集群,數(shù)據(jù)庫服務(wù)器基本上采用的是少量高端設(shè)備支撐大規(guī)模的核心應(yīng)用,無論采用的是RAC集群還是分布式數(shù)據(jù)庫集群,核心業(yè)務(wù)場(chǎng)景多數(shù)都是采用非常高端的小型機(jī)來搭建,動(dòng)輒上百甚至幾百個(gè)CPU,幾百GB的內(nèi)存,高端磁盤陣列,支撐起強(qiáng)大的數(shù)據(jù)庫事務(wù)吞吐量(TPS)。

在這種場(chǎng)景下,對(duì)于串聯(lián)接入的數(shù)據(jù)庫防火墻,面臨“小馬拉大車”的局面,高吞吐量和可擴(kuò)縮性挑戰(zhàn)有多嚴(yán)峻?下面兩個(gè)實(shí)例充分體現(xiàn):

首先,介紹一個(gè)數(shù)據(jù)庫防火墻的實(shí)際經(jīng)典案例:

數(shù)據(jù)庫防火墻經(jīng)典案例 拓?fù)鋱D

在這個(gè)經(jīng)典案例中,業(yè)務(wù)系統(tǒng)采用兩套R(shí)AC節(jié)點(diǎn)進(jìn)行負(fù)載均衡(雙活)運(yùn)行,常規(guī)穩(wěn)定運(yùn)行的情況下,單套R(shí)AC節(jié)點(diǎn)的性能指標(biāo)需求如下:

SQL吞吐量(SQL/秒)

50000(5萬)

通訊包吞吐量(包/秒)

25萬

會(huì)話數(shù)

8000

通訊包延遲

<50微秒(us)

當(dāng)有一路網(wǎng)絡(luò)環(huán)境出現(xiàn)故障,原來分散在2套R(shí)AC節(jié)點(diǎn)上的的壓力將集中在一個(gè)數(shù)據(jù)庫防火墻上,也就是說,異常情況下,單臺(tái)數(shù)據(jù)庫防火墻面臨的是支撐2倍的吞吐量和會(huì)話量壓力,同時(shí)通訊包的延遲仍然需要保持在50微秒以內(nèi)。

另外一個(gè)想拿來說說的案例,是截止到目前,數(shù)據(jù)庫防火墻面臨的最高端性能案例:

數(shù)據(jù)庫防火墻高端案例 拓?fù)鋱D

在這個(gè)案例中,整體的數(shù)據(jù)庫集群的性能需求是:

整體數(shù)據(jù)庫集群性能指標(biāo)

SQL吞吐量(SQL/秒)

200000(20萬)

并發(fā)會(huì)話數(shù)

100000(10萬)

數(shù)據(jù)庫集群數(shù)量

4個(gè)

折合到單個(gè)DBFirewall設(shè)備,考慮到設(shè)備故障情況,需要支撐的性能指標(biāo):

單臺(tái)DBFirewall性能指標(biāo)

SQL吞吐量(SQL/秒)

>120000(12萬)

并發(fā)會(huì)話數(shù)

>60000(6萬)

最多支撐數(shù)據(jù)庫集群數(shù)量

2個(gè)

高性能和可擴(kuò)縮性解決方案

通過介紹這兩個(gè)經(jīng)典案例和高端案例,相信不用多說,大家已經(jīng)能夠感受到數(shù)據(jù)庫防火墻必須具備怎樣一顆強(qiáng)大的心:低延遲、高吞吐量、高可擴(kuò)縮性能力。

我們確立了這一目標(biāo),下一步要做的是制定具體的解決方案,核心技術(shù)點(diǎn)有四:

1:極小化每個(gè)SQL操作的處理過程

眾所周知,SQL語法分析非常耗時(shí),需要專門進(jìn)行優(yōu)化:基于詞法和語法分析,對(duì)業(yè)務(wù)系統(tǒng)的SQL語句進(jìn)行抽象化處理,形成軟解析結(jié)果,并對(duì)SQL語句進(jìn)行序列化、標(biāo)簽化,這樣就只需要對(duì)語法特征不一樣的SQL語句進(jìn)行解析,而應(yīng)用系統(tǒng)中SQL語法特征不一樣的SQL語句是有限的,這樣,就能夠極大的減少應(yīng)用系統(tǒng)SQL語句的語法解析量。

2:無鎖化設(shè)計(jì),支撐高并發(fā)下的線性性能

隨著系統(tǒng)并發(fā)量的增加,互斥鎖會(huì)成為主要的性能瓶頸點(diǎn);無鎖化的實(shí)現(xiàn)方式是必然,必要時(shí)可以通過異步處理來提升吞吐量。

3:低延遲網(wǎng)絡(luò)處理技術(shù)

隨著吞吐量的增加,串聯(lián)的網(wǎng)絡(luò)處理開銷會(huì)成為主要的延遲;推薦采用基于Intel DPDK的透明網(wǎng)卡通訊包處理技術(shù),跳過操作系統(tǒng)內(nèi)核協(xié)議棧的處理,實(shí)現(xiàn)低延遲。

4:推薦采用經(jīng)典的多進(jìn)程機(jī)制

在關(guān)系型數(shù)據(jù)庫領(lǐng)域中,最經(jīng)典的設(shè)計(jì)要數(shù)Oracle數(shù)據(jù)庫的多進(jìn)程架構(gòu),每個(gè)數(shù)據(jù)庫的連接會(huì)話對(duì)應(yīng)一個(gè)獨(dú)立的Oracle進(jìn)程來處理,這樣的機(jī)制為數(shù)據(jù)庫帶來了兩個(gè)典型優(yōu)勢(shì):

高可擴(kuò)縮性:隨著硬件性能的提升,可以實(shí)現(xiàn)接近線性的處理性能提升。

高安全性:一個(gè)會(huì)話(進(jìn)程)的處理異常,不影響其他會(huì)話(進(jìn)程)。

安華金和數(shù)據(jù)庫防火墻,正是基于以上四點(diǎn)核心技術(shù)設(shè)計(jì)開發(fā)的一款成熟的數(shù)據(jù)庫防火墻產(chǎn)品,且已經(jīng)經(jīng)過了社保,金融,運(yùn)營(yíng)商等高端行業(yè)的驗(yàn)證。

至此數(shù)據(jù)庫防火墻的自我修養(yǎng)之二——高性能和可擴(kuò)縮性介紹完畢,歡迎廣大用戶繼續(xù)關(guān)注數(shù)據(jù)庫防火墻的自我修養(yǎng)系列文章。

名詞術(shù)語解釋

[1]DPDK:全稱Data Plane Development Kit,是intel開發(fā)的x86芯片上用于高性能網(wǎng)絡(luò)處理的基礎(chǔ)庫;是一款數(shù)據(jù)包轉(zhuǎn)發(fā)處理套件;適合網(wǎng)絡(luò)數(shù)據(jù)包分析,處理等操作;對(duì)于大數(shù)據(jù)包的轉(zhuǎn)發(fā),多核操作有一定的性能提升。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2016-09-30
論數(shù)據(jù)庫防火墻的自我修養(yǎng)之二丨高性能和可擴(kuò)縮
上周,我們開始討論數(shù)據(jù)庫防火墻的“自我修養(yǎng)”。作為一個(gè)技術(shù)人,對(duì)于文字的造詣遠(yuǎn)不及對(duì)代碼的掌控,筆者不擅長(zhǎng)用華麗的辭藻表達(dá)數(shù)據(jù)庫防

長(zhǎng)按掃碼 閱讀全文