本發(fā)明涉及一種分布式快速清單查詢系統(tǒng)及方法。
背景技術(shù):
對(duì)于電信清單的存儲(chǔ),以往一般采用非分布式的關(guān)系型數(shù)據(jù)庫(kù),這種存儲(chǔ)模式簡(jiǎn)單方便,能提供較復(fù)雜的查詢條件組合,并很好的支持表關(guān)聯(lián)查詢,查詢響應(yīng)也比較迅速。但這種存儲(chǔ)模式存在壓縮比低,擴(kuò)容困難等問題,當(dāng)數(shù)據(jù)海量增長(zhǎng)時(shí),往往很難滿足快速線性擴(kuò)容的要求。再以后發(fā)展成采用分布式部署的列存儲(chǔ)數(shù)據(jù)庫(kù)來存儲(chǔ)海量清單數(shù)據(jù),分布式的列存儲(chǔ)數(shù)據(jù)庫(kù)能提供更高的壓縮比,擴(kuò)容也相對(duì)簡(jiǎn)單,但由于列存儲(chǔ)數(shù)據(jù)庫(kù)在數(shù)據(jù)查詢時(shí)需要進(jìn)行數(shù)據(jù)解壓,并且將列數(shù)據(jù)拼接為行數(shù)據(jù),這樣在查詢響應(yīng)速度上就很難滿足要求,特別是在高并發(fā)查詢的情況下。
技術(shù)實(shí)現(xiàn)要素:
為了解決清單查詢系統(tǒng)響應(yīng)慢、存儲(chǔ)壓縮比低,以及不易線性擴(kuò)展的問題,本發(fā)明提供一種分布式快速清單查詢系統(tǒng)及方法,具體方案如下:
一種分布式快速清單查詢系統(tǒng),包括:
分布式高速緩存服務(wù)模塊,采用分布式內(nèi)存計(jì)算技術(shù),基于內(nèi)存的數(shù)據(jù)管理引擎,作為熱數(shù)據(jù)的存儲(chǔ)介質(zhì),提供高速的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)和查詢服務(wù);
分布式磁盤存儲(chǔ)服務(wù)模塊,包括分布式部署的列存儲(chǔ)數(shù)據(jù)庫(kù),支持pb級(jí)的數(shù)據(jù)壓縮存儲(chǔ)和分析查詢,支持高壓縮率和線性擴(kuò)展,作為冷數(shù)據(jù)的存儲(chǔ)系統(tǒng),提供相對(duì)較長(zhǎng)時(shí)間內(nèi)的數(shù)據(jù)存儲(chǔ)和查詢服務(wù)。
優(yōu)選的,還包括:
采集模塊,負(fù)責(zé)數(shù)據(jù)文件的采集,并進(jìn)行登記;
預(yù)處理模塊,對(duì)數(shù)據(jù)文件進(jìn)行文件去重、完整性檢查、規(guī)整、增強(qiáng)、抽取過濾以及拆分;
入庫(kù)模塊,把預(yù)處理過的數(shù)據(jù)插入到分布式高速緩存服務(wù)模塊或分布式磁盤存儲(chǔ)服務(wù)模塊中。
優(yōu)選的,還包括:
服務(wù)管理器,對(duì)服務(wù)節(jié)點(diǎn)中的分布式高速緩存服務(wù)模塊、分布式磁盤存儲(chǔ)服務(wù)模塊進(jìn)行管理,并接受查詢服務(wù)器的服務(wù)注冊(cè)請(qǐng)求,以及客戶端的服務(wù)訂閱請(qǐng)求并回復(fù)可用的已經(jīng)注冊(cè)的查詢服務(wù)器的地址;
查詢服務(wù)器,分布于各服務(wù)節(jié)點(diǎn),用于對(duì)所述服務(wù)節(jié)點(diǎn)內(nèi)的分布式高速緩存服務(wù)模塊、分布式磁盤存儲(chǔ)服務(wù)模塊進(jìn)行數(shù)據(jù)查詢。
一種分布式快速清單查詢方法:采用數(shù)據(jù)分級(jí)治理的思路,將熱數(shù)據(jù)、冷數(shù)據(jù)分開,采用不同的技術(shù)和產(chǎn)品來存儲(chǔ)和處理熱數(shù)據(jù)、冷數(shù)據(jù)。
優(yōu)選的,對(duì)于熱數(shù)據(jù)采用分布式高速緩存組件技術(shù),滿足高并發(fā)、低延時(shí)的查詢要求,提升客戶體驗(yàn);
對(duì)于冷數(shù)據(jù),則保存在分布式磁盤數(shù)據(jù)庫(kù)中,提供高容量高壓縮的存儲(chǔ)。
優(yōu)選的,所述熱數(shù)據(jù)、冷數(shù)據(jù)由采集模塊、預(yù)處理模塊以及入庫(kù)模塊依次對(duì)數(shù)據(jù)處理獲得。
優(yōu)選的,所述入庫(kù)模塊處理流程包括:
1)入庫(kù)進(jìn)程啟動(dòng)后,先獲取已經(jīng)預(yù)處理的清單文件列表;
2)打開清單文件并讀取清單記錄;
3)把清單記錄入庫(kù)到分布式高速緩存;
4)把清單記錄入庫(kù)到分布式磁盤數(shù)據(jù)庫(kù);
5)更新文件列表,標(biāo)志為入庫(kù);
6)刪除已入庫(kù)清單文件。
優(yōu)選的,建立服務(wù)管理器以及分布于服務(wù)節(jié)點(diǎn)的查詢服務(wù)器,客戶端通過向服務(wù)管理器得到服務(wù)列表,然后根據(jù)列表連接到查詢服務(wù)器,客戶端通過傳入用戶號(hào)碼、清單類型和時(shí)間范圍進(jìn)行清單查詢,查詢服務(wù)器按照預(yù)定的格式組裝成查詢結(jié)果包,返回給服務(wù)調(diào)用方。
優(yōu)選的,查詢服務(wù)器支持注冊(cè)訂閱機(jī)制,查詢服務(wù)器在進(jìn)行服務(wù)之前先注冊(cè)到服務(wù)管理器,是為服務(wù)注冊(cè),將能提供的服務(wù)告訴服務(wù)管理器,服務(wù)管理器把這些信息寫入服務(wù)列表,并在退出之前向服務(wù)管理器進(jìn)行注銷;
客戶端在使用查詢服務(wù)器提供的服務(wù)時(shí)須先向服務(wù)管理器發(fā)起服務(wù)訂閱請(qǐng)求,在獲得服務(wù)管理器返回的服務(wù)列表后,使用相應(yīng)的查詢服務(wù)器;服務(wù)管理器根據(jù)已經(jīng)注冊(cè)的服務(wù)信息以及各查詢服務(wù)器當(dāng)前的狀態(tài)決定返回的服務(wù)列表內(nèi)容,客戶端通過服務(wù)名來請(qǐng)求想要的服務(wù)。
優(yōu)選的,數(shù)據(jù)查詢流程如下:
1)客戶端向清單查詢服務(wù)器發(fā)起查詢請(qǐng)求,內(nèi)容包括號(hào)碼、時(shí)間段、清單類型;
2)查詢服務(wù)器根據(jù)時(shí)間段拆分為熱數(shù)據(jù)、冷數(shù)據(jù)查詢,對(duì)于熱數(shù)據(jù)查詢請(qǐng)求,向分布式高速緩存發(fā)查詢請(qǐng)求,對(duì)于冷數(shù)據(jù)查詢請(qǐng)求,則向分布式磁盤數(shù)據(jù)庫(kù)發(fā)查詢請(qǐng)求;
3)分布式高速緩存接到查詢請(qǐng)求后,在緩存中找到相應(yīng)數(shù)據(jù),并返回給查詢服務(wù)器;分布式磁盤數(shù)據(jù)庫(kù)接到查詢請(qǐng)求后在磁盤庫(kù)中找到相應(yīng)數(shù)據(jù),也返回給查詢服務(wù)器;
4)查詢服務(wù)器做冷熱結(jié)果數(shù)據(jù)做合并,返回給客戶端。
本發(fā)明提供的分布式快速清單查詢系統(tǒng)及方法可基于x86分布式部署,可動(dòng)態(tài)快速擴(kuò)容;支持服務(wù)注冊(cè)/訂閱機(jī)制,可動(dòng)態(tài)發(fā)現(xiàn)服務(wù);冷熱數(shù)據(jù)分治管理,常用熱數(shù)據(jù)存儲(chǔ)于主機(jī)內(nèi)存中,可提供快速查詢服務(wù)。本發(fā)明產(chǎn)品可應(yīng)用于電信運(yùn)營(yíng)支撐的清單查詢,并且擴(kuò)展后還可應(yīng)用于需要大規(guī)模存儲(chǔ)并快速響應(yīng)查詢的更廣泛領(lǐng)域;其設(shè)計(jì)思路領(lǐng)先于業(yè)界同行。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定,在附圖中:
圖1為本發(fā)明實(shí)施例框架圖;
圖2是本發(fā)明實(shí)施例清單入庫(kù)流程圖;
圖3是本發(fā)明實(shí)施例清單查詢服務(wù)器架構(gòu)圖;
圖4清單查詢流程圖;
圖5是本發(fā)明實(shí)施例根據(jù)數(shù)據(jù)冷熱清單分治存儲(chǔ)示意圖。
具體實(shí)施方式
下面將結(jié)合附圖以及具體實(shí)施例來詳細(xì)說明本發(fā)明,在此本發(fā)明的示意性實(shí)施例以及說明用來解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定;
實(shí)施例
如圖1所示,一種分布式快速清單查詢系統(tǒng),包括:
分布式高速緩存服務(wù)模塊,采用分布式內(nèi)存計(jì)算技術(shù),基于內(nèi)存的數(shù)據(jù)管理引擎,作為熱數(shù)據(jù)的存儲(chǔ)介質(zhì),提供高速的基于內(nèi)存的數(shù)據(jù)存儲(chǔ)和查詢服務(wù);高速緩存組件是完全基于內(nèi)存的數(shù)據(jù)管理引擎,致力于解決現(xiàn)有數(shù)據(jù)庫(kù)性能慢、擴(kuò)展難、成本高等固有問題。高速緩存組件支持分布式集群部署,支持完整的acid一致性,支持持久化。為了獲得最大化吞吐量,數(shù)據(jù)保存在內(nèi)存中(而不是在硬盤),這樣可以有效消除緩沖區(qū)管理。集群環(huán)境下的高速緩存組件,把數(shù)據(jù)分發(fā)給集群服務(wù)器的每個(gè)cpu進(jìn)行處理。每個(gè)單線程分區(qū)自主執(zhí)行,消除鎖定和閂鎖的需求。它還可以通過簡(jiǎn)單的在集群中增加附加節(jié)點(diǎn)的方式實(shí)現(xiàn)性能的線性增加。
分布式磁盤存儲(chǔ)服務(wù)模塊,包括分布式部署的列存儲(chǔ)數(shù)據(jù)庫(kù),支持pb級(jí)的數(shù)據(jù)壓縮存儲(chǔ)和分析查詢,支持高壓縮率和線性擴(kuò)展,作為冷數(shù)據(jù)的存儲(chǔ)系統(tǒng),提供相對(duì)較長(zhǎng)時(shí)間內(nèi)的數(shù)據(jù)存儲(chǔ)和查詢服務(wù)。
本實(shí)施例方案中的數(shù)據(jù)采集及處理包括:
采集模塊,負(fù)責(zé)數(shù)據(jù)文件的采集,并進(jìn)行登記,ocs系統(tǒng)提供完計(jì)費(fèi)服務(wù)后,把生成的話單以文件的形式保存在固定地方,清單庫(kù)系統(tǒng)的文件采集模塊負(fù)責(zé)及時(shí)的把這些話單文件使用ftp協(xié)議采集過來,并進(jìn)行登記。
預(yù)處理模塊,對(duì)數(shù)據(jù)文件進(jìn)行文件去重、完整性檢查、規(guī)整、增強(qiáng)、抽取過濾以及拆分,采集過來的話單文件,必須經(jīng)過預(yù)處理后才能入庫(kù)使用,預(yù)處理的內(nèi)容包括:
1)文件去重,根據(jù)文件名進(jìn)行查重。ocs在工程期間,可能會(huì)重復(fù)采集同一個(gè)文件,預(yù)處理查重功能確保不會(huì)重復(fù)對(duì)同一個(gè)文件進(jìn)行入庫(kù)。
2)記錄完整性檢查,對(duì)話單記錄做合理性檢查,對(duì)一些明顯不完成的記錄進(jìn)行登記和告警。
3)記錄信息增強(qiáng)和規(guī)整,為了入庫(kù)格式的需要,需要對(duì)原始話單記錄進(jìn)行必要的規(guī)整,如號(hào)碼區(qū)號(hào)規(guī)整等。另外為了方便統(tǒng)計(jì),需求在每條話單記錄末尾增加文件名信息等。
4)記錄信息抽取過濾,根據(jù)清單庫(kù)表設(shè)計(jì)要求,去掉原始話單記錄的一些冗余字段,只抽取有用的信息。
5)話單文件拆分,清單庫(kù)的記錄是按月分表的,為了方便入庫(kù)和統(tǒng)計(jì),需要對(duì)待入庫(kù)話單文件按月進(jìn)行拆分。
入庫(kù)模塊,清單入庫(kù)為常駐運(yùn)行的服務(wù),把預(yù)處理過的數(shù)據(jù)插入到分布式高速緩存服務(wù)模塊或分布式磁盤存儲(chǔ)服務(wù)模塊中,為了保持高速緩存和磁盤數(shù)據(jù)庫(kù)中的數(shù)據(jù)的一致性,同一份話單數(shù)據(jù)將分別入到分布式高速緩存和分布式磁盤數(shù)據(jù)庫(kù)中。
本實(shí)施例方案中還包括:
服務(wù)管理器,對(duì)服務(wù)節(jié)點(diǎn)中的分布式高速緩存服務(wù)模塊、分布式磁盤存儲(chǔ)服務(wù)模塊進(jìn)行管理,并接受查詢服務(wù)器的服務(wù)注冊(cè)請(qǐng)求,以及客戶端的服務(wù)訂閱請(qǐng)求并回復(fù)可用的已經(jīng)注冊(cè)的查詢服務(wù)器的地址;
查詢服務(wù)器,分布于各服務(wù)節(jié)點(diǎn),用于對(duì)所述服務(wù)節(jié)點(diǎn)內(nèi)的分布式高速緩存服務(wù)模塊、分布式磁盤存儲(chǔ)服務(wù)模塊進(jìn)行數(shù)據(jù)查詢。
由上述實(shí)施例方案可知,本發(fā)明采用數(shù)據(jù)分級(jí)治理的思路,將熱數(shù)據(jù)、冷數(shù)據(jù)分開,采用不同的技術(shù)和產(chǎn)品來存儲(chǔ)和處理熱數(shù)據(jù)、冷數(shù)據(jù)。
具體地,本發(fā)明實(shí)施例中,對(duì)于熱數(shù)據(jù)采用分布式高速緩存組件技術(shù),滿足高并發(fā)、低延時(shí)的查詢要求,提升客戶體驗(yàn);基于內(nèi)存訪問的分布式高速緩存,數(shù)據(jù)查詢處理全部都是在內(nèi)存中完成,無磁盤io,因此可以獲得1~2數(shù)據(jù)量級(jí)的性能提升。并且高速緩存以行為單位組織記錄,因此無需做數(shù)據(jù)解壓、多列拼行處理,而是直接返回清單記錄,處理效率大大提升。分布式內(nèi)高速緩存,在單機(jī)緩存的基礎(chǔ)上增加了水平擴(kuò)展的能力,因此容量上不再有限制,可以通過增加服務(wù)器數(shù)量來存儲(chǔ)海量數(shù)據(jù)。
對(duì)于冷數(shù)據(jù),則保存在分布式磁盤數(shù)據(jù)庫(kù)中,提供高容量高壓縮的存儲(chǔ)。
所述熱數(shù)據(jù)、冷數(shù)據(jù)由采集模塊、預(yù)處理模塊以及入庫(kù)模塊依次對(duì)數(shù)據(jù)處理獲得。
如圖2所示,上述實(shí)施例方案中的入庫(kù)模塊處理流程包括:
1)入庫(kù)進(jìn)程啟動(dòng)后,先獲取已經(jīng)預(yù)處理的清單文件列表;
2)打開清單文件并讀取清單記錄;
3)把清單記錄入庫(kù)到分布式高速緩存;
4)把清單記錄入庫(kù)到分布式磁盤數(shù)據(jù)庫(kù);
5)更新文件列表,標(biāo)志為入庫(kù);
6)刪除已入庫(kù)清單文件。
進(jìn)一步的,建立服務(wù)管理器以及分布于服務(wù)節(jié)點(diǎn)的查詢服務(wù)器,客戶端通過向服務(wù)管理器得到服務(wù)列表,然后根據(jù)列表連接到查詢服務(wù)器,客戶端通過傳入用戶號(hào)碼、清單類型和時(shí)間范圍進(jìn)行清單查詢,查詢服務(wù)器按照預(yù)定的格式組裝成查詢結(jié)果包,返回給服務(wù)調(diào)用方。
上述實(shí)施例提供的分布式快速清單查詢方法中,查詢服務(wù)器支持注冊(cè)訂閱機(jī)制,查詢服務(wù)器在進(jìn)行服務(wù)之前先注冊(cè)到服務(wù)管理器,是為服務(wù)注冊(cè),將能提供的服務(wù)告訴服務(wù)管理器,服務(wù)管理器把這些信息寫入服務(wù)列表,并在退出之前向服務(wù)管理器進(jìn)行注銷;服務(wù)注冊(cè)的內(nèi)容包括:動(dòng)作標(biāo)志(注冊(cè)1,注銷0)、服務(wù)名、服務(wù)類型、服務(wù)ip、服務(wù)端口、協(xié)議類型、協(xié)議版本、服務(wù)生效時(shí)間、服務(wù)失效時(shí)間。
客戶端在使用查詢服務(wù)器提供的服務(wù)時(shí)須先向服務(wù)管理器發(fā)起服務(wù)訂閱請(qǐng)求,在獲得服務(wù)管理器返回的服務(wù)列表后,使用相應(yīng)的查詢服務(wù)器;服務(wù)管理器根據(jù)已經(jīng)注冊(cè)的服務(wù)信息以及各查詢服務(wù)器當(dāng)前的狀態(tài)(健康狀態(tài)和閑忙狀態(tài))決定返回的服務(wù)列表內(nèi)容,客戶端通過服務(wù)名來請(qǐng)求想要的服務(wù)。
如圖3所示,查詢服務(wù)主線程啟動(dòng)后建立到高速緩存和磁盤數(shù)據(jù)庫(kù)的連接池,在向服務(wù)管理平臺(tái)注冊(cè)服務(wù)成功后,啟動(dòng)socket監(jiān)聽,等待為客戶端提供查詢服務(wù)。在接收到連接請(qǐng)求后,建立連接,并啟動(dòng)新的服務(wù)子線程為客戶端服務(wù)。客戶和子線程之間是socket長(zhǎng)連接,服務(wù)完成后客戶端主動(dòng)斷開。
高速緩存集群存放熱數(shù)據(jù)(1+1個(gè)月內(nèi)數(shù)據(jù)),gbase集群存放冷數(shù)據(jù)(t>1+1),
子線程獲取連接后執(zhí)行查詢操作,當(dāng)查詢?nèi)掌诖笥?+1即查磁盤數(shù)據(jù)庫(kù),當(dāng)日期小于1+1即查高速緩存,如果查不到數(shù)據(jù)再去查磁盤數(shù)據(jù)庫(kù)。
服務(wù)管理平臺(tái)除了處理注冊(cè)和訂閱請(qǐng)求外,還對(duì)清單系統(tǒng)內(nèi)的各個(gè)服務(wù)節(jié)點(diǎn)進(jìn)行管理:接收各節(jié)點(diǎn)返回的健康和閑忙狀態(tài);主動(dòng)撤離服務(wù)節(jié)點(diǎn)或接收新的服務(wù)節(jié)點(diǎn);調(diào)整各節(jié)點(diǎn)的閑忙系數(shù),進(jìn)行負(fù)載均衡處理等。
如圖4所示,上述實(shí)施例提供的分布式快速清單查詢方法,數(shù)據(jù)查詢流程如下:
1)客戶端向清單查詢服務(wù)器發(fā)起查詢請(qǐng)求,內(nèi)容包括號(hào)碼、時(shí)間段、清單類型;
2)查詢服務(wù)器根據(jù)時(shí)間段拆分為熱數(shù)據(jù)、冷數(shù)據(jù)查詢,對(duì)于熱數(shù)據(jù)查詢請(qǐng)求,向分布式高速緩存發(fā)查詢請(qǐng)求,對(duì)于冷數(shù)據(jù)查詢請(qǐng)求,則向分布式磁盤數(shù)據(jù)庫(kù)發(fā)查詢請(qǐng)求;
3)分布式高速緩存接到查詢請(qǐng)求后,在緩存中找到相應(yīng)數(shù)據(jù),并返回給查詢服務(wù)器;分布式磁盤數(shù)據(jù)庫(kù)接到查詢請(qǐng)求后在磁盤庫(kù)中找到相應(yīng)數(shù)據(jù),也返回給查詢服務(wù)器;
4)查詢服務(wù)器做冷熱結(jié)果數(shù)據(jù)做合并,返回給客戶端。
如圖5所示,本方案采用數(shù)據(jù)分級(jí)治理的思路,將熱數(shù)據(jù)、冷數(shù)據(jù)分開,采用不同的技術(shù)和產(chǎn)品來存儲(chǔ)和處理不同級(jí)別熱度的數(shù)據(jù)。
對(duì)于熱數(shù)據(jù)(如當(dāng)月和上月數(shù)據(jù))采用分布式高速緩存組件技術(shù),滿足高并發(fā)、低延時(shí)的查詢要求,提升客戶體驗(yàn)。對(duì)于冷數(shù)據(jù)(如非當(dāng)月和上月數(shù)據(jù)),則保存在分布式磁盤數(shù)據(jù)庫(kù)中,提供高容量高壓縮的存儲(chǔ)。
具體實(shí)現(xiàn)中,數(shù)據(jù)在入庫(kù)時(shí)同時(shí)入庫(kù)到分布式高速緩存和磁盤數(shù)據(jù)庫(kù),轉(zhuǎn)月后把非當(dāng)月和上月的數(shù)據(jù)從高速緩存中刪除即可。由于數(shù)據(jù)在內(nèi)存庫(kù)中是按月分表,刪除數(shù)據(jù)時(shí)只要執(zhí)行truncate截?cái)嗫煽焖龠M(jìn)行數(shù)據(jù)清理。查詢時(shí)根據(jù)當(dāng)前時(shí)間,確定是查詢高速緩存還是磁盤庫(kù)。
基于內(nèi)存訪問的分布式高速緩存,數(shù)據(jù)查詢處理全部都是在內(nèi)存中完成,無磁盤io,因此可以獲得1~2數(shù)據(jù)量級(jí)的性能提升。并且高速緩存以行為單位組織記錄,因此無需做數(shù)據(jù)解壓、多列拼行處理,而是直接返回清單記錄,處理效率大大提升。
分布式內(nèi)高速緩存,在單機(jī)緩存的基礎(chǔ)上增加了水平擴(kuò)展的能力,因此容量上不再有限制,可以通過增加服務(wù)器數(shù)量來存儲(chǔ)海量數(shù)據(jù)。
以上對(duì)本發(fā)明實(shí)施例所提供的技術(shù)方案進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明實(shí)施例的原理以及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只適用于幫助理解本發(fā)明實(shí)施例的原理;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例,在具體實(shí)施方式以及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。