国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

億級(jí)人像比對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)及優(yōu)化

2019-10-11 11:24:36余銘華
軟件導(dǎo)刊 2019年7期
關(guān)鍵詞:架構(gòu)設(shè)計(jì)系統(tǒng)優(yōu)化

摘 要:為滿足公安機(jī)關(guān)大規(guī)模人像數(shù)據(jù)庫(kù)的比對(duì)應(yīng)用需求,提高人像比對(duì)系統(tǒng)應(yīng)用規(guī)模和可用性,采用結(jié)構(gòu)化開發(fā)方法,從應(yīng)用層、數(shù)據(jù)庫(kù)層、主機(jī)層、存儲(chǔ)層等方面對(duì)人像比對(duì)系統(tǒng)進(jìn)行模塊化架構(gòu)設(shè)計(jì)和優(yōu)化。系統(tǒng)能夠支撐15億以上人像比對(duì)庫(kù)容量,實(shí)現(xiàn)了全國(guó)范圍的人像自動(dòng)比對(duì)和糾錯(cuò),提高了身份辨認(rèn)速度。系統(tǒng)平均建模速度、平均比對(duì)速度和查重速度分別提升38%、41%和55%。優(yōu)化后的人像比對(duì)系統(tǒng)在保證識(shí)別率高的同時(shí)能夠快速處理海量數(shù)據(jù),滿足公安機(jī)關(guān)應(yīng)用需求,有效解決了戶口登記管理中的“錯(cuò)、重、假”問題。

關(guān)鍵詞:人像比對(duì)系統(tǒng);架構(gòu)設(shè)計(jì);系統(tǒng)優(yōu)化;高可用系統(tǒng)

DOI:10. 11907/rjdk. 182884 開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)007-0128-05

Design and Optimization of Billion Level Face Recognition System Architecture

YU Ming-hua

(ISvision Technologies Co.,Ltd., Shanghai 201203, China)

Abstract: In order to meet the needs of the public security organs for large-scale portrait database application, and to improve the application scale and scene and high availability of the face recognition system, we use the structured development methodology, modular architecture designs and optimize the face recognition system from application layer, database layer, host layer, and storage layer, etc. The system can support more than 1.5 billion portrait matching library capacity, which realizes nationwide automatic comparison and correction of portraits, speeds up the identification process of relevant personnel in relevant departments. The mold speed, average comparison speed, and check speed were increased by 38%, 41%, and 55%, respectively. After optimization, the face recognition system can quickly process massive data while ensuring high recognition rate, meet the application requirements of public security agency, and effectively solve the problem of wrong, repeated and fake information in the registration management of household registration.

Key Words: face recognition system; architecture design; system optimization; system with high availability

作者簡(jiǎn)介:余銘華(1985-),男,上海銀晨智能識(shí)別科技有限公司工程師,研究方向?yàn)閼?yīng)用軟件、信息系統(tǒng)項(xiàng)目管理。

0 引言

人像比對(duì)系統(tǒng)基于人臉識(shí)別技術(shù),以公安機(jī)關(guān)信息化建設(shè)過程中積累的各類人像數(shù)據(jù)為基礎(chǔ),實(shí)現(xiàn)人員身份信息的確認(rèn)、核實(shí)與認(rèn)證,在戶籍管理、出入境管理、重點(diǎn)人口管理等方面應(yīng)用廣泛。隨著人像比對(duì)系統(tǒng)應(yīng)用場(chǎng)景范圍和規(guī)模的擴(kuò)大,人像比對(duì)系統(tǒng)累積的照片庫(kù)容量成直線上升趨勢(shì),從最開始的10萬級(jí)增加到100萬級(jí)、1 000萬級(jí),甚至億級(jí)照片庫(kù)容量成為常態(tài)。在這種情況下,人像比對(duì)系統(tǒng)面臨比對(duì)結(jié)果返回時(shí)間長(zhǎng)、系統(tǒng)查詢響應(yīng)速度慢、接口服務(wù)性能下降、數(shù)據(jù)更新慢等問題。

系統(tǒng)架構(gòu)設(shè)計(jì)和性能優(yōu)化范疇涉及廣泛,涵蓋計(jì)算機(jī)硬件、傳輸網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫(kù)、應(yīng)用軟件等諸多方面。針對(duì)提高軟件系統(tǒng)高可用性問題研究較多,并取得了相應(yīng)成果。林曉東等[1]對(duì)高可用系統(tǒng)結(jié)構(gòu)進(jìn)行了研究與實(shí)現(xiàn);Torkamani等[2]介紹使用體系結(jié)構(gòu)模式和策略實(shí)現(xiàn)高可用性的方法;文獻(xiàn)[3]全面探討了Web系統(tǒng)性能的具體優(yōu)化方法與策略;文獻(xiàn)[4]介紹了多種關(guān)于Nginx配置文件的技巧。

軟件架構(gòu)一方面可在高層次上對(duì)編程進(jìn)行規(guī)定,另一方面也可把編程上的經(jīng)驗(yàn)應(yīng)用到架構(gòu)優(yōu)化上[5]。本文基于前期人像比對(duì)系統(tǒng)設(shè)計(jì)和實(shí)際運(yùn)行經(jīng)驗(yàn),在對(duì)高可用系統(tǒng)結(jié)構(gòu)進(jìn)行分析后,針對(duì)實(shí)際項(xiàng)目中人像比對(duì)系統(tǒng)面臨的問題,采用結(jié)構(gòu)化軟件開發(fā)方法,從應(yīng)用層、數(shù)據(jù)庫(kù)層、主機(jī)層、存儲(chǔ)層等多方面對(duì)人像比對(duì)系統(tǒng)進(jìn)行架構(gòu)設(shè)計(jì),實(shí)現(xiàn)具備高可用性的人像比對(duì)系統(tǒng),從Web、數(shù)據(jù)庫(kù)、應(yīng)用程序等方面探討了系統(tǒng)優(yōu)化方法。實(shí)踐表明,系統(tǒng)能夠支撐15億以上的人像比對(duì)庫(kù)容量,具備高可用性。

1 系統(tǒng)概述

人像比對(duì)系統(tǒng)是從給定的人像數(shù)據(jù)庫(kù)中檢索比對(duì)特定人員的身份信息,并將比對(duì)結(jié)果按相似度由高到低進(jìn)行排列顯示進(jìn)行身份鑒定與核查。人像比對(duì)系統(tǒng)利用公安機(jī)關(guān)各類業(yè)務(wù)系統(tǒng)采集的海量人像數(shù)據(jù),由人像比對(duì)客戶端、管理中心服務(wù)器,比對(duì)服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器等組成,在海量圖像中實(shí)現(xiàn)人像檢索比對(duì)功能,完成人像信息批量/增量建模,1∶1、1∶X確認(rèn)比對(duì)、1∶N識(shí)別比對(duì)、M∶N查重比對(duì),比對(duì)結(jié)果查詢與分析,以及對(duì)數(shù)據(jù)抽取、人像建模、模板加載等進(jìn)行處理及統(tǒng)計(jì)分析。系統(tǒng)除完成各項(xiàng)人像比對(duì)基本功能外,還提供靈活便利的外部查詢和開發(fā)接口,滿足公安機(jī)關(guān)全警業(yè)務(wù)應(yīng)用需求。

2 總體架構(gòu)

基于.NET技術(shù)的Web應(yīng)用[6],采用.NET Framework技術(shù)架構(gòu)開發(fā)人像比對(duì)系統(tǒng),根據(jù)應(yīng)用軟件分層架構(gòu)模式進(jìn)行設(shè)計(jì),系統(tǒng)總體架構(gòu)如圖1所示。

人像比對(duì)系統(tǒng)分為表示層、業(yè)務(wù)層、服務(wù)層、數(shù)據(jù)層,各層實(shí)現(xiàn)功能如下:

(1)表示層:為滿足公安機(jī)關(guān)業(yè)務(wù)需求進(jìn)行功能設(shè)計(jì),為用戶提供交互操作的界面,實(shí)現(xiàn)人像比對(duì)Web、人像比對(duì)客戶端、人像照片處理、照片導(dǎo)入、查重結(jié)果審核、案件實(shí)戰(zhàn)操作、外部API接口等應(yīng)用功能[7]。

(2)業(yè)務(wù)層:基于公安機(jī)關(guān)業(yè)務(wù)需求進(jìn)行功能設(shè)計(jì),通過設(shè)計(jì)人臉比對(duì)算法及分析模型工具,實(shí)現(xiàn)人臉照片自動(dòng)分析和人臉識(shí)別比對(duì),包括建立人臉識(shí)別應(yīng)用的人像數(shù)據(jù)中心,提供人像比對(duì)的基礎(chǔ)數(shù)據(jù)模板,保存比對(duì)信息與報(bào)警信息,實(shí)現(xiàn)系統(tǒng)負(fù)載均衡及分布式應(yīng)用。

(3)服務(wù)層:實(shí)現(xiàn)應(yīng)用軟件基礎(chǔ)服務(wù),功能包括人像照片處理子系統(tǒng)、人像建模子系統(tǒng)、比對(duì)服務(wù)子系統(tǒng)、身份查重子系統(tǒng)、查重結(jié)果審核子系統(tǒng)、照片導(dǎo)入子系統(tǒng)、任務(wù)管理調(diào)度服務(wù)、系統(tǒng)管理子系統(tǒng)、權(quán)限控制子系統(tǒng)、數(shù)據(jù)同步服務(wù)、案件實(shí)戰(zhàn)操作模塊、外部API接口子系統(tǒng)等應(yīng)用功能。

(4)數(shù)據(jù)層:負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問和服務(wù),實(shí)現(xiàn)分布式文件系統(tǒng)集群及Cache,同時(shí)充分利用公安機(jī)關(guān)現(xiàn)有的基礎(chǔ)設(shè)施和設(shè)備,包括服務(wù)器、存儲(chǔ)、網(wǎng)絡(luò)、安全網(wǎng)關(guān)設(shè)施等設(shè)備。

3 系統(tǒng)設(shè)計(jì)

3.1 緩存設(shè)計(jì)

緩存是指把最常用的東西放在最容易取得的地方,分為靜態(tài)緩存和動(dòng)態(tài)緩存,是所有性能優(yōu)化最簡(jiǎn)單有效的解決方案。在系統(tǒng)設(shè)計(jì)過程中選用高性能的緩存組件Redis存儲(chǔ)系統(tǒng),并從瀏覽器、反向代理緩存、數(shù)據(jù)庫(kù)緩存、本地緩存4個(gè)方面進(jìn)行設(shè)計(jì)。

3.1.1 瀏覽器緩存設(shè)計(jì)

3.1.2 反向代理緩存設(shè)計(jì)

選用開源代碼Nginx實(shí)現(xiàn)反向代理緩存。反向代理位于Web服務(wù)器之前,接受來自用戶的Web連接請(qǐng)求,根據(jù)請(qǐng)求頁面是否存在緩存內(nèi)容對(duì)用戶請(qǐng)求進(jìn)行處理、轉(zhuǎn)發(fā),有緩存內(nèi)容直接將緩存內(nèi)容返回給請(qǐng)求用戶,沒有緩存內(nèi)容則先向Web服務(wù)器請(qǐng)求相應(yīng)數(shù)據(jù),將請(qǐng)求數(shù)據(jù)進(jìn)行本地緩存后再返回給請(qǐng)求用戶,使得后續(xù)更快訪問相應(yīng)數(shù)據(jù)。

3.1.3 數(shù)據(jù)庫(kù)緩存設(shè)計(jì)

對(duì)信息表、照片表、任務(wù)表等進(jìn)行拆分,將表中相對(duì)固定的字段和頻繁更新字段分別存儲(chǔ),使用Redis緩存組件對(duì)高頻率查詢低頻率更新的數(shù)據(jù)載入緩存,對(duì)高頻率更新的數(shù)據(jù)采用實(shí)時(shí)查詢方式,同時(shí)將靜態(tài)數(shù)據(jù)表(如字典數(shù)據(jù)等)緩存到Oracle內(nèi)存中。

3.1.4 本地緩存設(shè)計(jì)

在提取人像特征值過程中,將提取的人臉特征先進(jìn)行本地緩存,然后再批量存儲(chǔ)到數(shù)據(jù)庫(kù)中。

將人像建模子系統(tǒng)數(shù)據(jù)庫(kù)中的人像特征模板數(shù)據(jù)加載到本地內(nèi)存,并在本地磁盤生成模板文件保存。在比對(duì)服務(wù)下次啟動(dòng)時(shí)可直接從本地快速加載到物理內(nèi)存,無需訪問數(shù)據(jù)庫(kù),避免再次從數(shù)據(jù)庫(kù)中讀取,提高系統(tǒng)運(yùn)行加載速度。

3.2 負(fù)載均衡nginx設(shè)計(jì)

為避免單臺(tái)Web服務(wù)器因負(fù)載高而導(dǎo)致宕機(jī),提高系統(tǒng)穩(wěn)定性,采用Nginx負(fù)載均衡進(jìn)行設(shè)計(jì)。同時(shí)為保證負(fù)載均衡的高可用性,引入熱備方案機(jī)制,實(shí)現(xiàn)Nginx+Keepalived雙機(jī)熱備方案,實(shí)現(xiàn)Nginx高可用性,保證一個(gè)節(jié)點(diǎn)出現(xiàn)崩潰后另一個(gè)節(jié)點(diǎn)可以自動(dòng)接管其工作。同時(shí)設(shè)置Nginx的gzip參數(shù),開啟gzip壓縮功能,提高Web服務(wù)的請(qǐng)求和處理返回響應(yīng)速度。

3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)

數(shù)據(jù)庫(kù)設(shè)計(jì)以效率第一為原則,遵循三大范式原則創(chuàng)建數(shù)據(jù)庫(kù),根據(jù)業(yè)務(wù)處理邏輯修改數(shù)據(jù)庫(kù)以達(dá)到效率最高目的。將系統(tǒng)中需要查詢?cè)敿?xì)數(shù)據(jù)的信息表結(jié)構(gòu)進(jìn)行冗余設(shè)計(jì),減少關(guān)聯(lián)查詢,提高查詢性能。對(duì)經(jīng)常查詢使用的表進(jìn)行索引設(shè)計(jì),利用Oracle表分區(qū)特性功能對(duì)大數(shù)據(jù)表進(jìn)行分區(qū)設(shè)置,提高數(shù)據(jù)查詢和操作性能。

在比對(duì)任務(wù)處理過程中涉及到任務(wù)處理狀態(tài),數(shù)據(jù)庫(kù)設(shè)計(jì)過程中將該類信息設(shè)計(jì)成彈性集值表,系統(tǒng)處理過程只引用表的ID值,在需要名稱描述時(shí)再進(jìn)行關(guān)聯(lián)。

3.4 存儲(chǔ)設(shè)計(jì)

分別從數(shù)據(jù)庫(kù)存儲(chǔ)和圖片存儲(chǔ)進(jìn)行設(shè)計(jì)。

3.4.1 數(shù)據(jù)庫(kù)存儲(chǔ)設(shè)計(jì)

采用SAN將服務(wù)器平臺(tái)和存儲(chǔ)設(shè)備分開,通過光纖交換機(jī)將所有存儲(chǔ)設(shè)備鏈接起來形成光纖通信網(wǎng)絡(luò),便于擴(kuò)展存儲(chǔ)環(huán)境,實(shí)現(xiàn)7*24小時(shí)不間斷集中管理。

作為永久的數(shù)據(jù)存儲(chǔ)管理數(shù)據(jù)庫(kù),設(shè)計(jì)系統(tǒng)采用Hadoop和Oralce兩種類型數(shù)據(jù)庫(kù)。

3.4.2 分布式圖片存儲(chǔ)設(shè)計(jì)

人像比對(duì)系統(tǒng)需要對(duì)人臉圖像進(jìn)行處理和展示,設(shè)置一個(gè)單獨(dú)的圖片服務(wù)器存儲(chǔ)圖片,利用FastDFS實(shí)現(xiàn)圖片文件分布式存儲(chǔ),從Web服務(wù)器上分離圖片數(shù)據(jù),根據(jù)組織結(jié)構(gòu)將照片數(shù)據(jù)劃分成多塊進(jìn)行存儲(chǔ)管理,并存放在不同的物理位置。

3.5 核心服務(wù)設(shè)計(jì)

3.5.1 高性能數(shù)據(jù)建模設(shè)計(jì)

系統(tǒng)設(shè)計(jì)采用分庫(kù)、分段、多線程、批量并行的照片數(shù)據(jù)建模方式,實(shí)現(xiàn)快速高效建模,利用64位平臺(tái)技術(shù)實(shí)現(xiàn)自動(dòng)、手工、比對(duì)時(shí)錄入、單筆數(shù)據(jù)錄入、批量錄入等多種不同的建模方式。

3.5.2 比對(duì)模板優(yōu)化設(shè)計(jì)

在保證比對(duì)識(shí)別精度的前提下,優(yōu)化人像特征提取模型,將單張人像提取的特征值模板大小從5KB壓縮到2KB,并將人像特征值模板與人員信息(如性別、年齡、庫(kù)別分類等)進(jìn)行組合,形成人臉屬性比對(duì)模板,快速完成人像比對(duì)。實(shí)施后系統(tǒng)建模速度從50條/s提升到69條/s,在原有基礎(chǔ)上提升了38%。

3.5.3 分布式比對(duì)服務(wù)設(shè)計(jì)

設(shè)計(jì)比對(duì)服務(wù)可依據(jù)實(shí)際庫(kù)容量需求靈活配置,并且通過增加比對(duì)服務(wù)協(xié)調(diào)控制器,實(shí)現(xiàn)比對(duì)任務(wù)的分發(fā)與比對(duì)結(jié)果整合,比對(duì)服務(wù)與比對(duì)服務(wù)協(xié)調(diào)控制器之間通過消息通信實(shí)現(xiàn)交互。各個(gè)比對(duì)服務(wù)之間對(duì)分發(fā)的任務(wù)進(jìn)行并行獨(dú)立處理,并將處理后返回的結(jié)果匯總至比對(duì)服務(wù)協(xié)調(diào)控制器,比對(duì)服務(wù)協(xié)調(diào)控制器將比對(duì)結(jié)果整合后再進(jìn)行數(shù)據(jù)庫(kù)存儲(chǔ)。比對(duì)服務(wù)采用多層體系分布式比對(duì)架構(gòu)和64位平臺(tái)技術(shù),使用大內(nèi)存充分利用硬件資源,具有良好的擴(kuò)展性、可用性和穩(wěn)定性等優(yōu)點(diǎn)。

3.5.4 比對(duì)任務(wù)模式設(shè)計(jì)

系統(tǒng)設(shè)計(jì)不同的比對(duì)任務(wù)模式,將用戶提交的比對(duì)任務(wù)分成同步比對(duì)識(shí)別和報(bào)警、異步比對(duì)識(shí)別和報(bào)警等,同時(shí)根據(jù)用戶權(quán)限對(duì)用戶提交的比對(duì)任務(wù)進(jìn)行優(yōu)先級(jí)定義,用戶權(quán)限高則其提交的比對(duì)任務(wù)優(yōu)先級(jí)高。用戶在提交人像比對(duì)任務(wù)時(shí)可增加比對(duì)篩選條件,提高比對(duì)速度和比對(duì)識(shí)別率。提交任務(wù)時(shí)可勾選庫(kù)別、區(qū)域、性別、年齡范圍等多種篩選條件,同時(shí)還可設(shè)置比對(duì)相似度閾值快速返回比對(duì)結(jié)果。

3.6 接口API設(shè)計(jì)

接口采用Restful風(fēng)格設(shè)計(jì),利用單一性原則實(shí)現(xiàn)登陸、一對(duì)一比對(duì)、一對(duì)多比對(duì)等接口,在接口設(shè)計(jì)過程中對(duì)每個(gè)請(qǐng)求響應(yīng)定義一個(gè)請(qǐng)求ID字段,使用UUID作為該請(qǐng)求ID值,并在服務(wù)器記錄該值,用以跟蹤、診斷、調(diào)試。

4 系統(tǒng)優(yōu)化

在對(duì)人像比對(duì)系統(tǒng)進(jìn)行架構(gòu)設(shè)計(jì)和優(yōu)化過程中,分別從系統(tǒng)性能、可用性、伸縮性、擴(kuò)展性、安全性等方面對(duì)系統(tǒng)進(jìn)行優(yōu)化,以提高系統(tǒng)整體性能,采用的優(yōu)化策略如下:

(1)通過設(shè)計(jì)緩存和并發(fā)實(shí)現(xiàn)方式對(duì)Web前端進(jìn)行性能設(shè)計(jì)和優(yōu)化。

(2)應(yīng)用程序采用本地緩存和分布式緩存結(jié)合的方式進(jìn)行設(shè)計(jì)和優(yōu)化,并將多臺(tái)應(yīng)用服務(wù)器組成集群服務(wù)對(duì)外提供。設(shè)計(jì)比對(duì)服務(wù)有效使用大內(nèi)存,經(jīng)過實(shí)際數(shù)據(jù)測(cè)試,比對(duì)速度從1 200萬次/s達(dá)到1 700萬次/s,提升了41%,查重速度從2 000萬/s達(dá)到了3 100萬次/s,提升了55%。

(3)數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)在服務(wù)層增加隊(duì)列和緩存,將請(qǐng)求在上游層進(jìn)行攔截,數(shù)據(jù)庫(kù)層只實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)訪問請(qǐng)求,同時(shí)結(jié)合索引、緩存、SQL性能優(yōu)化等手段,在創(chuàng)建非聚簇索引過程中,使用INCLUDE子句包含表中的特定列,加快SQL語句的執(zhí)行速度。

(4)采用冗余手段,將應(yīng)用部署在多臺(tái)服務(wù)器上,通過負(fù)載均衡方式將多臺(tái)服務(wù)器組成集群,提供對(duì)外服務(wù),相互備份,減少單點(diǎn)交互,消除單點(diǎn)故障,實(shí)現(xiàn)水平擴(kuò)展,增強(qiáng)系統(tǒng)可用性。

(5)將業(yè)務(wù)邏輯進(jìn)行同構(gòu)設(shè)計(jì)和合理抽象,實(shí)現(xiàn)水平/垂直切割,實(shí)現(xiàn)異步處理,提升系統(tǒng)的伸縮性和擴(kuò)展能力。采用隱藏Nginx版本信息、修改Nginx worker進(jìn)程的用戶個(gè)數(shù)、Nginx站點(diǎn)目錄文件及目錄權(quán)限等方式對(duì)系統(tǒng)進(jìn)行安全性優(yōu)化。

4.1 人像比對(duì)Web優(yōu)化方法

用戶向系統(tǒng)提交比對(duì)任務(wù),比對(duì)成功后返回的結(jié)果都會(huì)包含比對(duì)相似度、姓名、年齡、證件號(hào)碼等基本信息和目標(biāo)照片數(shù)據(jù),以提供給用戶審查處理。由于返回的每張目標(biāo)照片容量均是數(shù)百倍于基本信息,基于降低數(shù)據(jù)傳輸量加快服務(wù)響應(yīng)時(shí)間思路,將比對(duì)結(jié)果中的基本信息和照片數(shù)據(jù)分開返回,由用戶選擇讀取照片數(shù)據(jù),以此降低系統(tǒng)響應(yīng)時(shí)間。

由于每個(gè)頁面都牽扯到大量的數(shù)據(jù)庫(kù)訪問,前臺(tái)Web一次性緩存無法達(dá)到性能要求。為提高頁面響應(yīng)速度,運(yùn)用分頁技術(shù)[8]解決客戶端等待時(shí)間過長(zhǎng)問題。采用后臺(tái)分頁查詢方式獲取結(jié)果數(shù)據(jù),在數(shù)據(jù)庫(kù)中對(duì)查詢數(shù)據(jù)進(jìn)行分頁,并在存儲(chǔ)過程中運(yùn)用Row_number()[9]函數(shù)提升分頁效率。在分頁查詢過程中設(shè)定3個(gè)參數(shù),分別是數(shù)據(jù)總體條數(shù)N_Count、每頁條數(shù)N_CountPerPage、第N頁條數(shù)N_Page。根據(jù)頁面不同的展示,將分頁查詢按照一次查詢分批展示和指定頁實(shí)時(shí)查詢展示兩種方式實(shí)現(xiàn)。

4.2 數(shù)據(jù)庫(kù)優(yōu)化方法

數(shù)據(jù)庫(kù)處理性能提升除了提高硬件配置外,還可從軟件方面對(duì)Oracle的查詢性能進(jìn)行優(yōu)化,使數(shù)據(jù)庫(kù)運(yùn)行處于最優(yōu)狀態(tài)。在系統(tǒng)優(yōu)化過程中采取建立索引、表分區(qū)設(shè)計(jì)、SQL語句優(yōu)化等技術(shù)手段進(jìn)行系統(tǒng)性能提升。

在創(chuàng)建系統(tǒng)數(shù)據(jù)表結(jié)構(gòu)時(shí),通過設(shè)計(jì)調(diào)整PCTFREE、PCTUSED、INITRANS、MAXTRANS等參數(shù),優(yōu)化表的插入、刪除、更新等操作。對(duì)系統(tǒng)中的表結(jié)構(gòu)按使用用途不同分別采取獨(dú)立的優(yōu)化方法。

下面列舉幾個(gè)關(guān)鍵表結(jié)構(gòu)優(yōu)化方式:信息表按信息記錄所屬區(qū)域類別進(jìn)行列表分區(qū);模板表將庫(kù)別和年齡范圍設(shè)計(jì)成LIST-RANGE組合分區(qū)予以優(yōu)化設(shè)計(jì);比對(duì)任務(wù)表則使用提交任務(wù)的時(shí)間按年和月實(shí)現(xiàn)RANGE-RANGE組合分區(qū)進(jìn)行優(yōu)化。

索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息,顯著提高海量數(shù)據(jù)的查詢效率。在創(chuàng)建索引過程中,依據(jù)表的操作類型(如是查詢還是增刪改)選擇恰當(dāng)?shù)乃饕愋停ㄈ绶俏ㄒ凰饕?、唯一索引、位圖索引、分區(qū)索引等),并在經(jīng)常需要存取的多個(gè)列上建立復(fù)合索引,同時(shí)檢查被索引的列或組合索引的首列是否出現(xiàn)在PL/SQL語句的WHERE子句中。在系統(tǒng)運(yùn)行一段時(shí)間后適當(dāng)對(duì)性能下降的索引進(jìn)行重建以提高索引效率。

SQL語句尤其是復(fù)雜SQL語句的性能優(yōu)化對(duì)數(shù)據(jù)庫(kù)的性能至關(guān)重要 [10]。在提升SQL語句執(zhí)行效率方面,采用整體到局部的思路改進(jìn)低效的SQL語句。先從整體著手,收集系統(tǒng)的整體性能信息并確定范圍;再?gòu)臄?shù)據(jù)庫(kù)層面入手,利用性能工具,查看SQL的執(zhí)行計(jì)劃。根據(jù)SQL的執(zhí)行計(jì)劃,分析低效的SQL執(zhí)行計(jì)劃,去掉不必要的全表掃描,充分利用已經(jīng)創(chuàng)建的索引,選擇最有效的執(zhí)行計(jì)劃來執(zhí)行SQL語句。如在編寫SQL語句SELECT子句中明確所需要的列,盡量避免使用SELECT *,在子查詢中少用或慎用IN或NOT IN語句。

4.3 應(yīng)用程序優(yōu)化方法

通常情況下由于單臺(tái)服務(wù)器內(nèi)存無法裝載所有的比對(duì)模板,所以將若干臺(tái)服務(wù)器組成一個(gè)比對(duì)服務(wù)集群,共同完成全部模板的裝載和比對(duì),并選用一臺(tái)服務(wù)器作為比對(duì)服務(wù)協(xié)調(diào)控制器,完成比對(duì)任務(wù)的預(yù)處理和比對(duì)結(jié)果的匯總、模板更新任務(wù)的查詢與分發(fā)、狀態(tài)監(jiān)測(cè)等。假設(shè)比對(duì)照片庫(kù)容量有10億,則總比對(duì)模板量約為2TB,可以設(shè)計(jì)由10臺(tái)比對(duì)服務(wù)器組成一個(gè)比對(duì)實(shí)例,那么10臺(tái)比對(duì)服務(wù)器除去操作系統(tǒng)所需的開銷外,總的剩余內(nèi)存空間在超過2T的情況下即可完成10億模板的全部加載。

比對(duì)服務(wù)應(yīng)用程序?qū)⑷讼裾掌:蟮奶卣髦导捌渌饕凑諑?kù)別、性別、年齡、區(qū)域、民族等特征排序聚簇后全部加載到服務(wù)器內(nèi)存中,以便根據(jù)相應(yīng)的比對(duì)檢索條件進(jìn)行同步或異步任務(wù)的比對(duì)。一般情況下,提交的比對(duì)任務(wù)不需要完成全部模板比對(duì),而是含有比對(duì)條件,比如比對(duì)性別為男、年齡在30-45歲范圍內(nèi)的模板數(shù)據(jù)。該條件可以過濾的數(shù)據(jù)量估算為性別約1/2,年齡約1/5(系統(tǒng)將年齡大致分為5個(gè)年齡段),則實(shí)際需要比對(duì)的模板數(shù)量約為總模板的1/10,比對(duì)用時(shí)是全部比對(duì)用時(shí)的1/10。

為充分利用并行計(jì)算機(jī)資源,比對(duì)服務(wù)將串行比對(duì)運(yùn)算處理變?yōu)椴⑿斜葘?duì)運(yùn)算處理。在比對(duì)任務(wù)處理過程中,使用OpenMP(Open Multi-Processing)實(shí)現(xiàn)CPU多核心的并發(fā)比對(duì)。OpenMP是一個(gè)編譯指導(dǎo)指令和庫(kù)函數(shù)集合,主要使用在共享式存儲(chǔ)計(jì)算機(jī)并行程序設(shè)計(jì)方面 [11]。在程序代碼中加入專用的pragma,指定程序運(yùn)行時(shí)使用并發(fā)線程及并發(fā)調(diào)度方式。根據(jù)硬件資源不同,程序先采用omp_get_num_procs()[12]函數(shù)獲取運(yùn)行程序計(jì)算機(jī)的處理器個(gè)數(shù)。為達(dá)到較好性能,通常情況下將線程數(shù)量設(shè)置為CPU核數(shù),每個(gè)核執(zhí)行一個(gè)線程,避免線程的切換開銷。同時(shí)為了CPU各核的負(fù)載均衡和有效降低線程管理開銷,組合使用Intel開源并發(fā)模板庫(kù)TBB(Threading Building Blocks)完成比對(duì)處理,實(shí)現(xiàn)任務(wù)密度和線程池。

5 結(jié)語

本文基于公安機(jī)關(guān)偵查破案業(yè)務(wù)需求,以人像算法引擎為核心,采用分層體系結(jié)構(gòu)的架構(gòu)設(shè)計(jì)方式對(duì)人像比對(duì)系統(tǒng)進(jìn)行架構(gòu)設(shè)計(jì)和優(yōu)化,實(shí)現(xiàn)了億級(jí)人像比對(duì)系統(tǒng),在協(xié)助公安偵查辦案人員劃定偵查方向、縮小偵查范圍、鎖定嫌疑對(duì)象乃至認(rèn)定罪犯等方面取得了明顯效果,提升了公安機(jī)關(guān)偵查人員核對(duì)、辨認(rèn)嫌疑人身份的效率。

在對(duì)億級(jí)人像比對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)過程中,研究了Web、數(shù)據(jù)庫(kù)和應(yīng)用程序等的優(yōu)化方法,通過對(duì)系統(tǒng)架構(gòu)設(shè)計(jì)和優(yōu)化過程中各種優(yōu)化工具、優(yōu)化策略、優(yōu)化方法的研究,為建設(shè)高可用性的人像比對(duì)系統(tǒng)打下基礎(chǔ),闡述了軟件系統(tǒng)的優(yōu)化方法。

參考文獻(xiàn):

[1] 林曉東,劉心松. 高可用性系統(tǒng)的研究與實(shí)現(xiàn)[J]. 電子科技大學(xué)學(xué)報(bào),1997(5):82-87.

[2] TORKAMANI M A,BAGHERI H,SHALTOOKI A A,et al. Architectural solution for reaching high availability[J]. Global Journal on Technology, 2013(1):105-109.

[3] 羅福強(qiáng),熊永福. 基于分層的Web系統(tǒng)的性能優(yōu)化研究與探討[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2012(11):85-88.

[4] DIMITRIAIVALIOTIS, 艾維利,陶利軍. 精通Nginx[M]. 北京:人民郵電出版社,2015.

[5] JOACHIM GOLL. 軟件架構(gòu)與模式[M]. 北京:清華大學(xué)出版社, 2017.

[6] 胡迎松,彭利文,池楚兵. 基于.NET的Web應(yīng)用三層結(jié)構(gòu)設(shè)計(jì)技術(shù)[J]. 計(jì)算機(jī)工程,2003,29(8):173-175.

[7] 曾暉澤. 公安人像比對(duì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 廈門:廈門大學(xué), 2014.

[8] 林萍,朱嬋. 基于Ajax技術(shù)和JAVAEE的分頁查詢優(yōu)化[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2017(8):916-1001.

[9] THOMAS KYTE. Oracle Database 9i/10g/11g編程藝術(shù):深入數(shù)據(jù)庫(kù)體系結(jié)構(gòu) [M]. 第2版. 北京:人民郵電出版社,2011.

[10] 周志德. Oralce數(shù)據(jù)庫(kù)的SQL查詢優(yōu)化研究[J]. 計(jì)算機(jī)與數(shù)字工程,2010,38(11):173-178.

[11] 査盛音,王玉玫,聶穎. OpenMP在圖形數(shù)據(jù)文件加載中的應(yīng)用[J]. 軟件導(dǎo)刊,2013,12(10):159-162.

[12] OpenMP application program interface version 4.0.0[EB/OL]. http://www.openmp.org.

[13] 李艷鵬, 楊彪. 分布式服務(wù)架構(gòu):原理、設(shè)計(jì)與實(shí)戰(zhàn)[M]. 北京:電子工業(yè)出版社,2017.

[14] ILYA GRIGORIK. Web性能權(quán)威指南[M]. 北京:人民郵電出版社,2014.

[15] 張杰,劉琦.多級(jí)聯(lián)動(dòng)的人像比對(duì)應(yīng)用平臺(tái)研究與設(shè)計(jì)[J]. 電腦知識(shí)與技術(shù), 2016, 12(31):177-178.

[16] 劉永梅. 基于人臉識(shí)別身份認(rèn)證系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì)與研究[D]. 呼和浩特:內(nèi)蒙古大學(xué), 2014.

[17] 劉合星,劉琦. 人像識(shí)別系統(tǒng)的設(shè)計(jì)與研究[J]. 河南科技, 2016(21):62-65.

[18] 關(guān)樂,劉磊,朱鵬,等. 動(dòng)態(tài)人像比對(duì)研究及應(yīng)用[J]. 甘肅科技, 2017(12):87-89.

[19] 楊洋,楊義光,范東亮. 人像比對(duì)系統(tǒng)建設(shè)中幾個(gè)關(guān)鍵問題研究[J]. 信息技術(shù)與信息化,2017(5):86-87.

[20] 黃靜,李炳. 基于Nginx的Web服務(wù)器性能優(yōu)化研究[J].? 浙江理工大學(xué)學(xué)報(bào),2016,35(7):600-606.

[21] 蒲曉陽. 基于Nginx和Redis高并發(fā)Web服務(wù)負(fù)載均衡的研究[J]. 內(nèi)江科技,2016,37(1):40-41.

[22] 趙峽策. 基于Nginx和Memcache的負(fù)載均衡集群架構(gòu)設(shè)計(jì)[J].? 電子技術(shù)與軟件工程,2014(5):39-40.

[23] 蔡文海,陳洺均. 基于OpenMP并行編程模型與性能優(yōu)化的稀疏矩陣操作研究[J]. 軟件導(dǎo)刊, 2016, 15(3):27-29.

[24] 張輝,趙郁亮,徐江,等. 基于Oracle數(shù)據(jù)庫(kù)海量數(shù)據(jù)的查詢優(yōu)化研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2012, 22(2):165-167.

[25] 陳南. ASP.NET中大數(shù)據(jù)量分頁技術(shù)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2011, 28(4):205-207.

[26] OPENMP C. OpenMP C and C++ application program interface draft[EB/OL]. http://www.openmp.org.

[27] BHATTACHARJEE A,CONTRERAS G,MARTONOSI M. Parallelization libraries:characterizing and reducing overheads[J]. ACM Transactions on Architecture & Code Optimization,2011,8(1):1-29.

[28] SUPINSKI B R D,SCOGLAND T R W,DURAN A,et al. The ongoing evolution of openMP[J]. Proceedings of the IEEE,2018(6):1-16.

(責(zé)任編輯:杜能鋼)

猜你喜歡
架構(gòu)設(shè)計(jì)系統(tǒng)優(yōu)化
PS臥式轉(zhuǎn)爐送風(fēng)系統(tǒng)優(yōu)化與實(shí)踐
基于安全性需求的高升力控制系統(tǒng)架構(gòu)設(shè)計(jì)
雙燃料主機(jī)缸套水冷卻系統(tǒng)優(yōu)化設(shè)計(jì)
虛擬收費(fèi)站架構(gòu)設(shè)計(jì)與高速公路自由流技術(shù)
大數(shù)據(jù)時(shí)代計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用架構(gòu)設(shè)計(jì)
電子制作(2019年24期)2019-02-23 13:22:24
基于大數(shù)據(jù)分析的ETC系統(tǒng)優(yōu)化探析
火電廠循環(huán)水處理及系統(tǒng)優(yōu)化探討
某螢石礦開拓系統(tǒng)優(yōu)化
對(duì)稱加密算法RC5的架構(gòu)設(shè)計(jì)與電路實(shí)現(xiàn)
應(yīng)用于SAN的自動(dòng)精簡(jiǎn)配置架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
区。| 宝应县| 大厂| 谢通门县| 兰州市| 兴安县| 托克托县| 察隅县| 沈阳市| 内乡县| 保山市| 临江市| 措美县| 永兴县| 瓦房店市| 十堰市| 山东省| 诸城市| 永泰县| 金坛市| 开化县| 分宜县| 新平| 托克逊县| 乳源| 达孜县| 濉溪县| 平罗县| 潜江市| 台湾省| 津市市| 尼木县| 普兰店市| 治县。| 大竹县| 宜春市| 信宜市| 荥经县| 石屏县| 璧山县| 双峰县|