劉冰 劉乾坤
1.公安部第一研究所 2.北京中盾安信科技發(fā)展有限公司

隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡社會與現(xiàn)實社會已融為一體,網(wǎng)絡身份管理和網(wǎng)絡可信身份認證的需求愈加強烈。“互聯(lián)網(wǎng)+”可信身份認證平臺是為支撐國家“互聯(lián)網(wǎng)+”行動計劃的大數(shù)據(jù)基礎設施,由國家發(fā)改委和科技部支持建設、公安部組織實施、公安部一所承建推廣。平臺的核心功能包括居民網(wǎng)絡身份的簽發(fā)、基礎數(shù)據(jù)的存儲、網(wǎng)絡身份的核驗認證。數(shù)據(jù)庫系統(tǒng)作為后臺服務的根基,其性能表現(xiàn)直接影響著平臺的服務質(zhì)量。面對數(shù)據(jù)體量龐大、日活量高、并發(fā)查詢高等應用需求,傳統(tǒng)的數(shù)據(jù)庫存在一定的局限性,本文通過融合目錄訪問協(xié)議、熱數(shù)據(jù)緩存檢索等多種技術,研究滿足該場景的數(shù)據(jù)庫應用技術。
網(wǎng)絡可信身份認證是一項重大的系統(tǒng)工程,以法定身份證件信息和國家人口基礎信息為基礎,面向全網(wǎng)提供網(wǎng)絡身份認證能力。網(wǎng)絡身份憑證的簽發(fā)和管理、真實身份核驗和網(wǎng)絡身份認證等業(yè)務場景,都需要后臺數(shù)據(jù)庫提供高效、精準的數(shù)據(jù)服務能力。關系型數(shù)據(jù)庫的優(yōu)勢在于事務隔離和處理,目錄服務的優(yōu)勢在于小數(shù)量的檢索,但是對于網(wǎng)絡身份認證需求,面向單表十幾億數(shù)據(jù)規(guī)模且多種檢索條件下的高效、精確查詢,這兩種現(xiàn)有的數(shù)據(jù)庫服務均無法單獨滿足網(wǎng)絡身份認證場景中并發(fā)量高、數(shù)據(jù)體量大、檢索條件不一且快速響應的業(yè)務需求。
(1)基于SQL的關系型數(shù)據(jù)庫因為事務隔離、SQL語言解析、鎖機制等體積龐大而復雜,在數(shù)據(jù)快速檢索時速度不占優(yōu)勢。
(2)目錄服務系統(tǒng)[3]是用于網(wǎng)絡數(shù)據(jù)資源的分布式存儲和快速查詢的專用數(shù)據(jù)庫系統(tǒng),內(nèi)部數(shù)據(jù)存儲一般使用B+樹結構,這就使得在小數(shù)據(jù)量時可以獲得優(yōu)越的檢索性能,但面臨大規(guī)模數(shù)據(jù)量時,由于B+樹結構分成太多層而導致檢索性能大幅下降。尤其是為了維持B+樹結構的平衡性,新數(shù)據(jù)的增加還可能引起整棵B+樹結構的重新平衡,存儲性能也是大幅度下降。為了容納更多的數(shù)據(jù),一般應用勢必會采用搭建目錄服務集群的方式來管理數(shù)據(jù),這就帶來了數(shù)據(jù)管理和維護的復雜度。
(3)目錄服務系統(tǒng)也具有一些其他Key-Value類型數(shù)據(jù)庫所不具備的優(yōu)勢,目錄服務系統(tǒng)是用于網(wǎng)絡數(shù)據(jù)資源的分布式存儲和快速查詢的專用數(shù)據(jù)庫系統(tǒng),是專門為那些檢索頻率大大高于數(shù)據(jù)更新頻率的信息服務而設計的。目錄服務系統(tǒng)一般都遵循LDAP輕型目錄訪問協(xié)議,從而能夠保持應用的標準性和獨立性。該協(xié)議中規(guī)定了目錄的數(shù)據(jù)單元-條目,并且規(guī)定了操作條目數(shù)據(jù)的九個基本操作,包括綁定、添加、修改、刪除、搜索、比較、解綁等,非常適合網(wǎng)絡身份認證服務的操作。
本文嘗試融合多種技術優(yōu)勢,研究使用單一系統(tǒng)作為網(wǎng)絡身份認證數(shù)據(jù)庫,解決大規(guī)模基礎數(shù)據(jù)下快速存儲及檢索的問題。構建分布式內(nèi)存Key-Value數(shù)據(jù)庫(以下簡稱“新型KV數(shù)據(jù)庫”),支持輕型數(shù)據(jù)訪問協(xié)議、并行接收并處理查詢請求、采用鍵值對存儲數(shù)據(jù)、提供優(yōu)化的熱數(shù)據(jù)鍵值對內(nèi)存緩存機制等功能,以滿足網(wǎng)絡身份認證應用的需求。
新型KV數(shù)據(jù)庫由通訊接口、前端、數(shù)據(jù)緩存、后端存儲等幾部分組成。居民身份認證平臺通過通訊接口的輕型數(shù)據(jù)訪問協(xié)議與新型KV數(shù)據(jù)庫前端之間建立網(wǎng)絡連接;新型KV數(shù)據(jù)庫前端實現(xiàn)并行接收、處理居民身份認證平臺的認證數(shù)據(jù)訪問請求;數(shù)據(jù)緩存組件提供優(yōu)化的與存儲數(shù)據(jù)相適應的熱數(shù)據(jù)鍵值對認證數(shù)據(jù)內(nèi)存緩存機制;新型KV數(shù)據(jù)庫后端采用哈希與內(nèi)分區(qū)技術相結合的鍵值對認證數(shù)據(jù)落地存儲。新型KV數(shù)據(jù)庫的總體架構如圖1所示。

新型KV數(shù)據(jù)庫采用分布式集群架構解決大并發(fā)問題,采用分片的Key-Value方式數(shù)據(jù)存儲,通過自定義策略將熱數(shù)據(jù)存儲在內(nèi)存中,并且通過Key索引方式保障幾十億身份認證數(shù)據(jù)的極速即時訪問,平均每條數(shù)據(jù)的查詢時間小于1毫秒。新型KV數(shù)據(jù)庫分布式集群架構示意如圖2所示。

新型KV數(shù)據(jù)庫的技術路線是從接口到存儲模型,都不再要求樹形組織形式,而只要求數(shù)據(jù)具有查詢條件與證書實體之間的鍵值對表達形式,不再使用B+樹結構,而是換成大數(shù)據(jù)檢索性能更好的Hash結構,使用哈希與內(nèi)分區(qū)技術相結合的鍵值對存儲結構,隨機拆分和均衡證書數(shù)據(jù),減少落地數(shù)據(jù)的數(shù)量和被訪問次數(shù),實現(xiàn)更少的磁盤I/O次數(shù),提高新型KV數(shù)據(jù)庫的證書容量和存儲效率,獲得更好的檢索性能。并且采用優(yōu)化的內(nèi)存緩存機制減少數(shù)據(jù)訪問延遲,保證支持十幾億數(shù)量規(guī)模時的存儲和檢索性能。新型KV數(shù)據(jù)庫的關鍵技術包含:
利用輕型目錄訪問協(xié)議構建輕型數(shù)據(jù)訪問協(xié)議,并在格式定義上與標準的輕型目錄訪問協(xié)議相兼容,避免了復雜的SQL語言解析,從而能夠繼續(xù)保持認證服務應用的標準性和獨立性。輕型數(shù)據(jù)訪問協(xié)議提供完整齊備的數(shù)據(jù)表達結構、傳輸編碼封裝、數(shù)據(jù)訪問操作和安全控制功能等。但唯一不要求所存儲的數(shù)據(jù)必須具有目錄樹形結構和目錄層次特征,而是依據(jù)認證數(shù)據(jù)的特性保持鍵值對形式,提取證書序列號作為主鍵值,證書內(nèi)容等作為檢索目標,建立檢索條件與主鍵值的索引映射關系,證書使用范圍作為數(shù)據(jù)存儲的庫名標識。
新型KV數(shù)據(jù)庫前端系統(tǒng)負責接收、解析認證系統(tǒng)通過輕型數(shù)據(jù)訪問協(xié)議發(fā)送過來的認證數(shù)據(jù)訪問請求。這些訪問請求包括:綁定、解綁定、添加、刪除、修改、搜索、擴展、元數(shù)據(jù)查詢、放棄。與標準的輕型目錄訪問不同在于,庫名就是所有認證數(shù)據(jù)快速存儲及檢索的BASE,忽略認證系統(tǒng)提供的SCOPE,即認證系統(tǒng)無需提供檢索范圍,由認證數(shù)據(jù)存儲及檢索系統(tǒng)依據(jù)認證數(shù)據(jù)的特性來優(yōu)化存儲和定位檢索目標。
1.認證數(shù)據(jù)的檢索特征和證書結構
新型KV數(shù)據(jù)庫為每類認證數(shù)據(jù)建立單獨的識別名,數(shù)據(jù)條目包括檢索條件和屬性值。數(shù)據(jù)條目的檢索條件和每個屬性值都會通過hash轉(zhuǎn)化為0~9、A~F、a~f之間的數(shù)據(jù),每個字段存儲相應的數(shù)據(jù)信息。例如識別名為CT,檢索條件為sn,屬性值分別為base_dn和scope。
2.使用改造后輕型數(shù)據(jù)訪問協(xié)議進行訪問
以API為例,存儲函數(shù):
LDAPEntry entry=new LDAPEntry(dn,attrs);//參數(shù):屬性集合
ld.add(entry);//添加
檢索函數(shù):ld.search(base_dn,scope,filters,attrs,attrsonly);
其中,base_dn填寫證書類型CT,scope隨意填寫,fileters使用sn的具體值。
后端系統(tǒng)負責前端請求的持久化訪問,將認證數(shù)據(jù)按照鍵值對形式進行哈希結構存儲,并依據(jù)指定分區(qū)個數(shù)將鍵值數(shù)字分配到特定的分區(qū)文件中,實現(xiàn)了對億級數(shù)量級認證數(shù)據(jù)的化整為零,減少數(shù)據(jù)訪問次數(shù),可以快速存儲和檢索。
全部的證書數(shù)據(jù)分為若干個分區(qū)文件進行存儲,需要對檢索字段sn進行分區(qū),假如需要分成3個文件區(qū)域,分別將鍵值字符串的ASCII碼值逐個累加轉(zhuǎn)為十進制數(shù)字,根據(jù)提供的分區(qū)數(shù)量進行取模,即可轉(zhuǎn)為特定的分區(qū)編號。示例中的SN1~SN4分別為65/3=2、66/3=0、67/3=1、68/3=2。可以將SN2定位到分區(qū)1中存儲,將SN3定位到分區(qū)2中存儲,將SN1和SN4定位到分區(qū)3中存儲。成功存儲后,該證書數(shù)據(jù)同步更新到內(nèi)存的熱數(shù)據(jù)緩存結構中。

新型KV數(shù)據(jù)庫緩存系統(tǒng)提供優(yōu)化的與存儲數(shù)據(jù)相適應的熱數(shù)據(jù)鍵值對認證數(shù)據(jù)內(nèi)存緩存機制,其機制為在內(nèi)存中申請內(nèi)存容量允許范圍的空間,依據(jù)指定分區(qū)個數(shù)分區(qū)若干個哈希結構進行管理,將從磁盤存儲中特定的分區(qū)文件的認證數(shù)據(jù)的訪問,包括添加、修改,都對應在特定內(nèi)存哈希結構中進行緩存,當對磁盤存儲中特定的分區(qū)文件的認證數(shù)據(jù)進行檢索之前,首先在特定內(nèi)存哈希結構中進行檢索,檢索到即返回,內(nèi)存檢索不到再從分區(qū)磁盤存儲中特定的分區(qū)文件的認證數(shù)據(jù)進行檢索,檢索到在特定內(nèi)存哈希結構中進行緩存后返回,如果將認證數(shù)據(jù)從磁盤存儲中特定的分區(qū)文件進行成功刪除后,需要對應在特定內(nèi)存哈希結構中進行刪除。使用該內(nèi)存緩存機制,第一利用了內(nèi)存的訪問速度明顯快于磁盤的訪問速度,第二內(nèi)存申請的空間數(shù)量小于磁盤空間數(shù)量,所容納的認證數(shù)據(jù)基本為訪問的熱數(shù)據(jù),申請的內(nèi)存空間需要循環(huán)利用,常訪問的熱數(shù)據(jù)在運行一段時間之后基本都從內(nèi)存中可以檢索到。
內(nèi)存的熱數(shù)據(jù)緩存結構與分區(qū)存儲的結構相對應,只是限制于內(nèi)存大小,在檢索時首先檢索熱數(shù)據(jù),沒有再檢索硬盤分區(qū)存儲數(shù)據(jù),成功檢索后,該證書數(shù)據(jù)同步更新到內(nèi)存的熱數(shù)據(jù)緩存結構中。如檢索SN2后,即在內(nèi)存,下次可直接檢索出SN2。

(1)數(shù)據(jù)第一次被訪問,加入到訪問歷史列表;
(2)如果數(shù)據(jù)在訪問歷史列表里后沒有達到K次訪問,則按照規(guī)則淘汰;
(3)當訪問歷史隊列中的數(shù)據(jù)訪問次數(shù)達到K次后,將數(shù)據(jù)索引從歷史隊列刪除,將數(shù)據(jù)移到緩存隊列中,并緩存此數(shù)據(jù),緩存隊列重新按照時間排序;
(4)緩存數(shù)據(jù)隊列中被再次訪問后,重新排序;
(5)需要淘汰數(shù)據(jù)時,淘汰緩存隊列中排在末尾的數(shù)據(jù),即淘汰“倒數(shù)第K次訪問離現(xiàn)在最久”的數(shù)據(jù)。
本文通過融合改造輕型目錄訪問協(xié)議、基于哈希和內(nèi)分區(qū)的認證數(shù)據(jù)存儲方法、熱數(shù)據(jù)緩存檢索方法等多種技術方法,從原理上設計了一種新的認證數(shù)據(jù)快速存儲及檢索的方法,并構建了新型KV數(shù)據(jù)庫的原型系統(tǒng)。

根據(jù)網(wǎng)絡身份認證服務應用場景特點,完成了基于輕型數(shù)據(jù)訪問協(xié)議的業(yè)務適配、模擬業(yè)務場景的功能測試、單機和集群兩種部署模式的性能對比測試。在具備一定規(guī)模的基礎數(shù)據(jù)環(huán)境下,業(yè)務方通過API與數(shù)據(jù)庫建立網(wǎng)絡連接,并向數(shù)據(jù)庫發(fā)起查詢請求,其中請求數(shù)據(jù)包括已緩存的熱數(shù)據(jù)和查磁盤的冷數(shù)據(jù)。測試場景包括不同數(shù)據(jù)結構下的高并發(fā)精確查詢、混合讀寫、批量文件導入,初步驗證了新型KV數(shù)據(jù)庫原型系統(tǒng)的功能和性能可以基本滿足應用場景的需要。且在億級別基礎數(shù)據(jù)規(guī)模下,數(shù)據(jù)庫性能表現(xiàn)符合預期,測試結果均高于業(yè)務需求指標,且集群部署模式的性能較單機基本呈線性提升。
本文研究的新型KV數(shù)據(jù)庫研究成果應用于“互聯(lián)網(wǎng)+”可信身份認證平臺,為平臺百億級基礎數(shù)據(jù)分區(qū)、十萬級業(yè)務并發(fā)查詢、百萬級吞吐量的快速檢索及響應提供了高效、可靠、穩(wěn)定的數(shù)據(jù)服務支撐。