證券行業(yè)投資者服務(wù)數(shù)據(jù)集市-建設(shè)方案_第1頁
證券行業(yè)投資者服務(wù)數(shù)據(jù)集市-建設(shè)方案_第2頁
證券行業(yè)投資者服務(wù)數(shù)據(jù)集市-建設(shè)方案_第3頁
證券行業(yè)投資者服務(wù)數(shù)據(jù)集市-建設(shè)方案_第4頁
證券行業(yè)投資者服務(wù)數(shù)據(jù)集市-建設(shè)方案_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、證券行業(yè)投資者服務(wù)數(shù)據(jù)集市建設(shè)方案目 錄 TOC o 1-3 h z u HYPERLINK l _Toc524640077 1.背景介紹 PAGEREF _Toc524640077 h 3 HYPERLINK l _Toc524640078 2.項目需求 PAGEREF _Toc524640078 h 4 HYPERLINK l _Toc524640079 1.功能性需求 PAGEREF _Toc524640079 h 4 HYPERLINK l _Toc524640080 2.非功能性需求 PAGEREF _Toc524640080 h 5 HYPERLINK l _Toc52464008

2、1 3.安全性需求 PAGEREF _Toc524640081 h 5 HYPERLINK l _Toc524640082 3.技術(shù)架構(gòu) PAGEREF _Toc524640082 h 5 HYPERLINK l _Toc524640083 3.1.邏輯架構(gòu) PAGEREF _Toc524640083 h 5 HYPERLINK l _Toc524640084 1.數(shù)據(jù)采集途徑一:批量數(shù)據(jù) ETL PAGEREF _Toc524640084 h 6 HYPERLINK l _Toc524640085 2.數(shù)據(jù)采集途徑二:準實時數(shù)據(jù)同步 PAGEREF _Toc524640085 h 6 HYP

3、ERLINK l _Toc524640086 3.數(shù)據(jù)存儲 PAGEREF _Toc524640086 h 7 HYPERLINK l _Toc524640087 4.數(shù)據(jù)服務(wù) PAGEREF _Toc524640087 h 7 HYPERLINK l _Toc524640088 3.2.數(shù)據(jù)架構(gòu) PAGEREF _Toc524640088 h 7 HYPERLINK l _Toc524640089 3.3.物理架構(gòu) PAGEREF _Toc524640089 h 9 HYPERLINK l _Toc524640090 1.批量數(shù)據(jù) ETL 服務(wù)器 PAGEREF _Toc524640090

4、h 10 HYPERLINK l _Toc524640091 2.數(shù)據(jù)緩存隊列服務(wù)器集群 PAGEREF _Toc524640091 h 11 HYPERLINK l _Toc524640092 3.集市數(shù)據(jù)庫及并行計算服務(wù)器集群 PAGEREF _Toc524640092 h 11 HYPERLINK l _Toc524640093 4.應(yīng)用服務(wù)器集群 PAGEREF _Toc524640093 h 11 HYPERLINK l _Toc524640094 4.關(guān)鍵技術(shù) PAGEREF _Toc524640094 h 12 HYPERLINK l _Toc524640095 4.1.NoSQ

5、L 數(shù)據(jù)庫:SequoiaDB PAGEREF _Toc524640095 h 12 HYPERLINK l _Toc524640096 4.2.批量數(shù)據(jù)加工:Spark SQL PAGEREF _Toc524640096 h 15 HYPERLINK l _Toc524640097 4.3.實時數(shù)據(jù)流處理:Kafka + Spark streaming PAGEREF _Toc524640097 h 16 HYPERLINK l _Toc524640098 5.總結(jié)和展望 PAGEREF _Toc524640098 h 17 HYPERLINK l _Toc524640099 5.1.項目成

6、果 PAGEREF _Toc524640099 h 17 HYPERLINK l _Toc524640100 5.2.未來規(guī)劃 PAGEREF _Toc524640100 h 18 HYPERLINK l _Toc524640101 1.批量數(shù)據(jù) ETL 流程優(yōu)化 PAGEREF _Toc524640101 h 18 HYPERLINK l _Toc524640102 2.數(shù)據(jù)生命周期管理 PAGEREF _Toc524640102 h 18 HYPERLINK l _Toc524640103 3.元數(shù)據(jù)管理 PAGEREF _Toc524640103 h 19背景介紹我國股市約有 1.2 億

7、散戶,直接關(guān)乎上億家庭、數(shù)億人切身利益,保護好投資者尤其是中小投資者的合法權(quán)益,是資本市場工作人民性的具體體現(xiàn),也是服務(wù)實體經(jīng)濟的應(yīng)有之義。黨的十九大明確提出“必須堅持以人民為中心的發(fā)展思想”。中國證監(jiān)會有關(guān)負責人表示,要認真貫徹落實十九大精神和黨中央、國務(wù)院關(guān)于資本市場建設(shè)的一系列決策部署,加快推動形成融資功能完備、基礎(chǔ)制度扎實、市場監(jiān)管有效、投資者合法權(quán)益得到有效保護的多層次資本市場體系,切實做好投資者保護工作。證監(jiān)會主席劉士余先后多次強調(diào)“投資者保護重如泰山”、“保護投資者合法權(quán)益是證監(jiān)會職責和使命所在”、“保護中小投資者合法權(quán)益是天大的事”。目前,公司對投資者服務(wù)主要依賴人工柜臺,柜員

8、手工進行業(yè)務(wù)操作和數(shù)據(jù)查詢,受限于服務(wù)網(wǎng)點數(shù)量和人工辦理效率,不能很好滿足投資者服務(wù)需求。為更好地服務(wù)廣大中小投資者,保護其合法權(quán)益,根據(jù)公司戰(zhàn)略布局和技術(shù)規(guī)劃,決定建設(shè)多渠道的投資者綜合服務(wù)專區(qū)系統(tǒng)及相配套的面向投資者服務(wù)的數(shù)據(jù)集市,為其提供用戶體驗好、快速便捷、智能化的賬戶查詢和證券質(zhì)押等服務(wù)。在數(shù)據(jù)集市建設(shè)之前,數(shù)據(jù)查詢主要依賴于數(shù)據(jù)倉庫。 HYPERLINK /item/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93 數(shù)據(jù)倉庫是一個集成的、面向主題的數(shù)據(jù)集合,設(shè)計的目的是支持決策支持系統(tǒng)的功能。在數(shù)據(jù)倉庫里,每個數(shù)據(jù)單元都與特定的時間相關(guān)。數(shù)據(jù)倉庫包括原子級別

9、的數(shù)據(jù)和輕度匯總的數(shù)據(jù),是面向主題的、集成的、不可更新的(穩(wěn)定性)、隨時間不斷變化(不同時間)的數(shù)據(jù)集合,用以支持經(jīng)營管理中的決策制定過程。數(shù)據(jù)倉庫是一個典型的 OLAP 系統(tǒng),在高并發(fā)、快速響應(yīng)的場景下具有很大的局限性,無法滿足海量投資者數(shù)據(jù)查詢服務(wù)需求。目前數(shù)據(jù)倉庫使用 TD 一體機設(shè)備,成本十分高昂。數(shù)據(jù)集市(Data Mart) HYPERLINK /item/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93 ,也叫數(shù)據(jù)市場,是企業(yè)級數(shù)據(jù)倉庫的一個子集,是為滿足特定的部門或者用戶的需求,只面向某個特定的主題,按照多維的方式進行存儲,包括定義維度、需要計算的指標、

10、維度的層次等,生成面向決策分析需求的數(shù)據(jù)立方體。為了解決靈活性與性能之間的矛盾,數(shù)據(jù)集市就是數(shù)據(jù)倉庫體系結(jié)構(gòu)中增加的一種小型的部門或工作組級別的數(shù)據(jù)倉庫。數(shù)據(jù)集市存儲為特定用戶預(yù)先計算好的數(shù)據(jù),從而滿足用戶對性能的需求。數(shù)據(jù)集市可以在一定程度上緩解訪問數(shù)據(jù)倉庫的瓶頸。為了保證投資者服務(wù)系統(tǒng)在低延時和高并發(fā)查詢的情況下具備足夠的支撐能力,可以 724 對外提供數(shù)據(jù)服務(wù),且不影響原有數(shù)據(jù)倉庫統(tǒng)計分析應(yīng)用的正常運行,最終決定建設(shè)面向投資者服務(wù)的專業(yè)數(shù)據(jù)集市。項目需求投資者服務(wù)數(shù)據(jù)集市主要目標是以面向用戶體驗為基礎(chǔ),具有業(yè)務(wù)敏捷、分布式服務(wù)、高伸縮、高可用、易管理維護等特點,為多渠道的投資者綜合服務(wù)專

11、區(qū)服務(wù)。先期開始建設(shè)的數(shù)據(jù)集市主要包括有新三板市場投資者服務(wù)數(shù)據(jù)集市、基金市場投資者投票服務(wù)數(shù)據(jù)集市、全市場在線業(yè)務(wù)查詢數(shù)據(jù)集市。其建設(shè)原則應(yīng)包括:抓住主線功能需求;采用主流技術(shù);滿足未來發(fā)展需求;充分驗證測試?;谏鲜瞿繕撕驮瓌t,我們總結(jié)了如下需求。功能性需求存儲現(xiàn)有數(shù)倉中滬深市場、新三板市場、基金市場等各類投資者數(shù)據(jù);支持結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù);數(shù)據(jù)庫和其他服務(wù)組件具備動態(tài)擴容能力,以支撐數(shù)據(jù)集市階段性發(fā)展的容量和計算能力需要;支持 T+1 批量數(shù)據(jù)的 ETL 功能,能夠從 TeraData 數(shù)據(jù)倉庫及其他數(shù)據(jù)庫采集數(shù)據(jù);支持實時數(shù)據(jù)流處理能力,實現(xiàn)準實時數(shù)據(jù)同步;支持數(shù)據(jù)加工,主要是多表關(guān)

12、聯(lián)和聚合運算;數(shù)據(jù)庫支持 SQL 和 API 訪問接口,方便應(yīng)用開發(fā);支持數(shù)據(jù)備份恢復(fù);具備完善的管理功能,例如監(jiān)控、配置和任務(wù)調(diào)度等;非功能性需求海量數(shù)據(jù)存儲。初期至少支撐 100TB 存儲容量,遠期支撐 PB 級;高并發(fā)訪問。初期至少支撐 1 萬并發(fā)查詢,遠期支撐 10 萬并發(fā)查詢;低延時。在高并發(fā)情況下,查詢響應(yīng)時間不超過 100 毫秒;7x24 持續(xù)穩(wěn)定運行。在高可用集群技術(shù)支撐下能夠?qū)崿F(xiàn)集群級別的不間斷持續(xù)穩(wěn)定運行,并能夠在絕大部分場景下進行不停止集群的數(shù)據(jù)庫維護工作。安全性需求數(shù)據(jù)高可用。需要支持多副本冗余。在部分副本數(shù)據(jù)損毀情況下, 保障數(shù)據(jù)不丟失;用戶身份驗證和權(quán)限管理。用戶不

13、可越權(quán)訪問數(shù)據(jù);完善的審計功能。能夠完全記錄所有數(shù)據(jù)訪問和數(shù)據(jù)操作。技術(shù)架構(gòu)邏輯架構(gòu)截止目前,三個數(shù)據(jù)集市的數(shù)據(jù)分別來源于數(shù)據(jù)倉庫和基金投票系統(tǒng)。所有數(shù)據(jù)需經(jīng)過 ETL 處理后存儲到數(shù)據(jù)集市中,部分數(shù)據(jù)還需經(jīng)過批量加工處理后, 供下游數(shù)據(jù)使用者查詢。數(shù)據(jù)集市的邏輯架構(gòu)如圖一所示。圖一:邏輯架構(gòu)如圖一所示,從上游數(shù)據(jù)源到下游使用者,中間提供服務(wù)的數(shù)據(jù)集市內(nèi)部包含數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)處理、數(shù)據(jù)存儲和平臺服務(wù)這五大功能模塊。其中,數(shù)據(jù)采集、數(shù)據(jù)傳輸、數(shù)據(jù)處理可以類比為傳統(tǒng)的 ETL 功能模塊。但是,這個數(shù)據(jù)集市的 ETL 功能模塊包含了兩種 ETL 方式:批量數(shù)據(jù) ETL 和準實時數(shù)據(jù)同步。數(shù)據(jù)

14、采集途徑一:批量數(shù)據(jù) ETL新三板市場和全市場在線業(yè)務(wù)數(shù)據(jù)集市要求數(shù)據(jù)每日更新。因此這兩個數(shù)據(jù)集市均采用傳統(tǒng)的 ETL 方式,即每日定時導(dǎo)出批量數(shù)據(jù)到文件(Extract),然后經(jīng)過文件傳輸、數(shù)據(jù)轉(zhuǎn)換(Transform)和數(shù)據(jù)加載(Load),最終將數(shù)據(jù)放入數(shù)據(jù)集市的數(shù)據(jù)庫中存儲,以供下游使用者查詢。我們稱這個流程為批量數(shù)據(jù)ETL。主要包含以下步驟:1)定時抽?。好刻煲归g,數(shù)據(jù)倉庫里邊的數(shù)據(jù)加工處理完畢之后,數(shù)據(jù)集市的抽取任務(wù)定時啟動,將約定數(shù)據(jù)接口的新增數(shù)據(jù)或者全量數(shù)據(jù)抽取到數(shù)據(jù)文件中。2)文件緩存:抽取環(huán)節(jié)生成的數(shù)據(jù)文件需要存放到文件系統(tǒng)中,以備后續(xù)數(shù)據(jù)處理之用。另外,數(shù)據(jù)文件需要壓縮緩

15、存多天,作為數(shù)據(jù)備份使用。3)批量處理:兩個數(shù)據(jù)集市的大部分接口數(shù)據(jù)只需要數(shù)據(jù)轉(zhuǎn)換和加載入庫。少量接口數(shù)據(jù)需要在數(shù)據(jù)入庫之后進行加工處理。加工的主要需求是預(yù)關(guān)聯(lián),即將兩表或者多表數(shù)據(jù)關(guān)聯(lián)形成更多字段的新表,以滿足兩個數(shù)據(jù)集市的數(shù)據(jù)查詢需求。數(shù)據(jù)采集途徑二:準實時數(shù)據(jù)同步基金市場投資者投票服務(wù)數(shù)據(jù)集市對數(shù)據(jù)時效要求較高,要求數(shù)據(jù)準實時同步,以數(shù)據(jù)準實時查詢。具體而言,即要求上游系統(tǒng)(基金市場投資者投票服務(wù)系統(tǒng))的數(shù)據(jù)發(fā)生變化(包含增刪改)之后,數(shù)據(jù)集市內(nèi)的數(shù)據(jù)也需在短時間之內(nèi)(5 秒之內(nèi))實現(xiàn)相同的變化。我們稱這種 ETL 方式為數(shù)據(jù)準實時同步,也可稱為實時數(shù)據(jù)流處理。主要包含以下步驟:1)實時

16、采集:該步驟要求最短時間內(nèi)發(fā)現(xiàn)源數(shù)據(jù)庫的數(shù)據(jù)變化,包含對應(yīng)庫表的數(shù)據(jù)的增刪改,并且不對源數(shù)據(jù)庫產(chǎn)生明顯的性能影響。2)緩存隊列:為了增加穩(wěn)定性和吞吐量,在實時采集和實時數(shù)據(jù)加工處理環(huán)節(jié)中間使用數(shù)據(jù)緩存。該緩存以隊列的方式,保障數(shù)據(jù)先進先出的順序關(guān)系。該緩存隊列要求具備優(yōu)秀的響應(yīng)性能、并發(fā)能力、高吞吐量、穩(wěn)定性和高可用能力,以保障數(shù)據(jù)同步流程安全可用。3)實時處理:該環(huán)節(jié)包括數(shù)據(jù)加載和實時統(tǒng)計兩方面作業(yè)內(nèi)容。每條投票數(shù)據(jù)順序進入緩存隊列之后,由實時處理程序順序的讀出并加載入庫,同時實時統(tǒng)計投票數(shù)等重要數(shù)據(jù),用于基金投票狀態(tài)的實時展示。數(shù)據(jù)存儲數(shù)據(jù)經(jīng)過 ETL 過程之后,被存入數(shù)據(jù)庫,主要包括賬戶

17、數(shù)據(jù)和交易明細數(shù)據(jù)。數(shù)據(jù)服務(wù)數(shù)據(jù)查詢是數(shù)據(jù)集市最核心的服務(wù)。新三板市場投資者服務(wù)數(shù)據(jù)集市和全市場在線業(yè)務(wù)數(shù)據(jù)集市這兩個數(shù)據(jù)集市主要提供賬戶數(shù)據(jù)、證券交易流水查詢服務(wù)?;鹗袌鐾顿Y者投票服務(wù)數(shù)據(jù)集市主要提供投票詳情及實時統(tǒng)計結(jié)果查詢。歸結(jié)起來,這些主要是高并發(fā)的精準查詢。數(shù)據(jù)架構(gòu)數(shù)據(jù)進入數(shù)據(jù)倉庫之后,將根據(jù)分析或者查詢的需求,加工和匯總成相應(yīng)主題。因此,數(shù)據(jù)集市的數(shù)據(jù)也將按照查詢主題進行組織和管理。根據(jù)數(shù)據(jù)主題及數(shù)據(jù)處理加工流程,我們規(guī)劃設(shè)計了數(shù)據(jù)架構(gòu)如圖二所示。圖二:數(shù)據(jù)架構(gòu)圖目前已經(jīng)實施了如下三個數(shù)據(jù)集市:新三板市場投資者服務(wù)數(shù)據(jù)集市;全市場在線業(yè)務(wù)查詢數(shù)據(jù)集市;基金市場投資者投票服務(wù)數(shù)據(jù)集

18、市。上述三個數(shù)據(jù)集市之間不共享數(shù)據(jù)、不需要關(guān)聯(lián)查詢、不存在交叉訪問權(quán)限, 是可以完全獨立運行的。但是,在數(shù)據(jù)庫中不是分庫管理的,而是通過權(quán)限控制形成邏輯層面的獨立數(shù)據(jù)集市,這樣可以共享軟硬件資源。新三板市場投資者服務(wù)數(shù)據(jù)集市和全市場在線業(yè)務(wù)查詢數(shù)據(jù)集市的數(shù)據(jù)來源均為數(shù)據(jù)倉庫。數(shù)據(jù)接口形式為 T+1 的批量數(shù)據(jù)文件,即每日證券市場收市清算交收批量處理產(chǎn)生的數(shù)據(jù)。兩個數(shù)據(jù)集市由不同的邏輯數(shù)據(jù)域存儲,管理隔離。同時,由于這兩個數(shù)據(jù)集市的數(shù)據(jù)查詢需求中存在表關(guān)聯(lián)情況,而頻繁的并發(fā)關(guān)聯(lián)查詢需要消耗大量磁盤 I/O、內(nèi)存和 CPU 計算時間,所以要對多表關(guān)聯(lián)進行預(yù)加工處理,即將多表關(guān)聯(lián)到一張表中,以便于將

19、多表關(guān)聯(lián)查詢轉(zhuǎn)變?yōu)閱伪聿樵?,從而提升查詢效率?;鹗袌鐾顿Y者投票服務(wù)數(shù)據(jù)集市的數(shù)據(jù)來源于上游交易系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)實時采集,即數(shù)據(jù)變化實時同步到數(shù)據(jù)集市中。同時,由于基金投票場景中存在實時顯示投票進展的需求,所以需要實時統(tǒng)計各投票選項的票數(shù),對每條投票數(shù)據(jù)進行實時累加統(tǒng)計,并將結(jié)果更新入數(shù)據(jù)集市的統(tǒng)計表中。下游各業(yè)務(wù)系統(tǒng)通過查詢服務(wù)接口可以隨時查詢對應(yīng)數(shù)據(jù)集市的數(shù)據(jù)。查詢服務(wù)提供身份驗證、權(quán)限管理和查詢接口,不允許修改數(shù)據(jù)。物理架構(gòu)根據(jù)數(shù)據(jù)集市功能需求、邏輯架構(gòu)和數(shù)據(jù)架構(gòu),我們規(guī)劃的物理架構(gòu)可以用圖三來表述。圖三:物理架構(gòu)圖包括以下四個部分:批量數(shù)據(jù) ETL 服務(wù)器該服務(wù)器用于批量數(shù)據(jù) ETL

20、流程。服務(wù)器中運轉(zhuǎn) ETL 主控程序、數(shù)據(jù)轉(zhuǎn)碼程序和數(shù)據(jù)批量加載程序。這些應(yīng)用均為 Java 語言開發(fā)。ETL 主控程序使用統(tǒng)一調(diào)度監(jiān)控系統(tǒng)(外部系統(tǒng))的定時作業(yè)調(diào)起,完成指定數(shù)據(jù)接口的指定 ETL 過程, 例如檢查數(shù)據(jù)文件到達情況,調(diào)用數(shù)據(jù)轉(zhuǎn)碼或者數(shù)據(jù)裝載等動作。數(shù)據(jù)轉(zhuǎn)碼使用Java 程序調(diào)用 Python 轉(zhuǎn)碼程序完成,能夠做到 GBK 編碼到 UTF-8 編碼的轉(zhuǎn)換, 并且吐出轉(zhuǎn)碼失敗的數(shù)據(jù)。數(shù)據(jù)批量加載程序主要是通過快速加載工具完成,并且檢查加載結(jié)果是否正確。所有程序均具備錯誤檢測及告警能力。另外,該服務(wù)器的文件系統(tǒng)作為數(shù)據(jù)文件緩存使用,并由一個清理程序自動維護。超過緩存期限的數(shù)據(jù)文件

21、將被自動清理,以保持文件系統(tǒng)剩余空間足夠使用。該服務(wù)器為 X86 Linux 虛擬服務(wù)器,配備 4TB 磁盤空間。數(shù)據(jù)緩存隊列服務(wù)器集群該服務(wù)器集群由三臺服務(wù)器組成,其中部署三副本的 Kafka 集群,并配合外部 Zookeeper 集群的一致性服務(wù),從而實現(xiàn)高可用的消息隊列服務(wù)集群。Spark 集群中,在 Spark streaming 分布式數(shù)據(jù)流引擎中運行 Java 應(yīng)用程序?qū)崿F(xiàn)小批次的實時數(shù)據(jù)加載入庫和實時數(shù)據(jù)統(tǒng)計計算。使用 Spark SQL 作為批量數(shù)據(jù)加工引擎,主要實現(xiàn)多表關(guān)聯(lián)的預(yù)處理作業(yè)。這個集群中的服務(wù)器均為 X86 Linux 虛擬服務(wù)器,每臺服務(wù)器配備 1TB 磁盤空間。

22、集市數(shù)據(jù)庫及并行計算服務(wù)器集群該服務(wù)器集群中部署了兩個邏輯集群,分別是 NoSQL 數(shù)據(jù)庫集群和 Spark 集群。NoSQL 數(shù)據(jù)庫作為數(shù)據(jù)存儲層,Spark 作為計算層。這樣規(guī)劃的原因主要有兩點:1)兩者資源需求互補,即數(shù)據(jù)庫最耗 I/O,而 Spark 最耗 CPU 和內(nèi)存, 能夠充分利用服務(wù)器硬件資源;2)NoSQL 數(shù)據(jù)庫和 Spark 均為分布式架構(gòu),Spark計算單元訪問本服務(wù)器的 NoSQL 數(shù)據(jù)庫節(jié)點可以具備最好的性能。NoSQL 數(shù)據(jù)庫集群部署為三副本高可用模式。其高可用機制由數(shù)據(jù)庫引擎自身提供,無需借助 Zookeeper。Spark 集群的高可用機制借助處于系統(tǒng)外部的

23、Zookeeper 實現(xiàn)。這個集群中的服務(wù)器均為 X86 Linux 物理服務(wù)器,每臺服務(wù)器配備 10 塊 4TB硬盤。應(yīng)用服務(wù)器集群數(shù)據(jù)查詢服務(wù)及管理服務(wù)均部署于應(yīng)用服務(wù)器中,并且集群化部署,以提供負載均衡和主備容災(zāi)能力。這些應(yīng)用服務(wù)通過 NoSQL 數(shù)據(jù)庫提供的訪問接口(SQL JDBC 和 Java API 兩種方式)的連接池方式連接 NoSQL 數(shù)據(jù)庫。應(yīng)用服務(wù)同時需要提供管理功能,例如用戶管理、權(quán)限管理、配置管理、監(jiān)控等功能。下游業(yè)務(wù)系統(tǒng)通過 F5 負載均衡服務(wù)器訪問應(yīng)用服務(wù)。應(yīng)用服務(wù)器集群的服務(wù)器均為 X86 Linux 虛擬服務(wù)器。關(guān)鍵技術(shù)依據(jù)數(shù)據(jù)集市的整體需求,設(shè)計上述系統(tǒng)架構(gòu)

24、的過程中采用了抓住主線功能需求、采用主流技術(shù)、滿足未來發(fā)展需求、充分驗證測試的設(shè)計原則。通過大量的功能、性能、穩(wěn)定性驗證測試,該平臺最終選擇了如下軟件以實現(xiàn)對應(yīng)的需求:NoSQL 數(shù)據(jù)庫選擇國產(chǎn) SequoiaDB,可支撐海量數(shù)據(jù)存儲和低延時高并發(fā)的數(shù)據(jù)查詢,并具有金融企業(yè)級數(shù)據(jù)訪問安全審計功能Spark SQL 支撐批量數(shù)據(jù)加工和統(tǒng)計Spark streaming 支撐實時數(shù)據(jù)流計算處理Kafka 支撐實時數(shù)據(jù)流的數(shù)據(jù)緩存下面具體介紹一下主要軟件技術(shù)特性。NoSQL 數(shù)據(jù)庫:SequoiaDB對比項SequoiaDBHbase技術(shù)支持國產(chǎn)原廠源代碼級別國產(chǎn)第三方架構(gòu)復(fù)雜度簡單,無需 HDFS

25、復(fù) 雜 度 高 , HDFS+Hbase兩地三中心容災(zāi)能力多副本,引擎內(nèi)置機制支持難以實現(xiàn)多索引支持在多個字段上建立索引,也支持唯一索引只有 rowkey 索引,其他字段需要設(shè)計二級索引, 工作復(fù)雜多字段查詢高速(因為行存)低速(因為列存)適用場景交易+查詢+分析查詢+分析SQL 支持MySQL/Postgresql, HIVE/SparkSQLHIVE/SparkSQL我們也對 Hbase 和 SequoiaDB 進行了調(diào)研和測試,對比分析結(jié)果如表二所示,最終考慮到業(yè)務(wù)場景和技術(shù)支持服務(wù)情況,選擇了 SequoiaDB。連接方式JDBC/JSONAPIAPI/JDBC事務(wù)支持支持不支持高并發(fā)

26、隨機讀取性能高性能一般且波動嚴重表二:SequoiaDB 對比 HbaseSequoiaDB 作為典型的Share-Nothing 的分布式數(shù)據(jù)庫,同時具備如下特性:分布式、可擴展、高容量;高性能、高并發(fā);高可用、高穩(wěn)定性;支持 SQL;企業(yè)級管理功能。SequoiaDB 采用分片技術(shù)為系統(tǒng)提供了橫向擴展機制,其分片過程對于應(yīng)用程序來說完全透明。該機制解決了單臺服務(wù)器硬件資源(如內(nèi)存、CPU、磁盤 I/O) 受限的問題,而且并不會增加應(yīng)用程序開發(fā)的復(fù)雜性。SequoiaDB 采用經(jīng)典的分布式技術(shù)架構(gòu),如圖四所示。圖四:SequoiaDB 整體架構(gòu)SequoiaDB 引擎主要由三種節(jié)點組成:協(xié)調(diào)

27、節(jié)點:負責調(diào)度、分配、匯總,是 SequoiaDB 的數(shù)據(jù)分發(fā)節(jié)點,本身不存儲任何數(shù)據(jù),主要負責接收應(yīng)用程序的訪問請求;編目節(jié)點:負責存儲整個數(shù)據(jù)庫的部署結(jié)構(gòu)與節(jié)點狀態(tài)信息,并且記錄集合空間與集合的參數(shù)信息,同時記錄每個集合的數(shù)據(jù)切分狀況;數(shù)據(jù)節(jié)點:承載數(shù)據(jù)存儲、計算的進程,為用戶提供高性能的讀寫服務(wù), 并且在多索引的支持下針對海量數(shù)據(jù)查詢性能優(yōu)越。多個數(shù)據(jù)節(jié)點可以組成一個數(shù)據(jù)節(jié)點組,根據(jù)選舉算法自動選擇一個主數(shù)據(jù)節(jié)點,其余節(jié)點為備數(shù)據(jù)節(jié)點。數(shù)據(jù)集市部署 SequoiaDB 時采用三副本冗余高可用方式。各副本之間,由數(shù)據(jù)庫引擎實現(xiàn)自動的同步或者異步日志復(fù)制機制。保證了多副本之間的數(shù)據(jù)一致性。當

28、其中一副本(主節(jié)點)出現(xiàn)故障時候,其他兩副本能夠快速選舉新的主節(jié)點,并且繼續(xù)提供數(shù)據(jù)讀寫服務(wù)。該部署方式可以保證不出現(xiàn)單點故障。圖五:SequoiaDB 多副本高可用SequoiaDB 的分布式和多副本的部署方式,可以最大程度實現(xiàn)高效數(shù)據(jù)庫高并發(fā)訪問,并且保障平臺整體平穩(wěn)運行。應(yīng)用訪問 SequoiaDB 的接口方式主要有 Json API 方式和 SQL 方式。Java 應(yīng)用通常采用 Java API 驅(qū)動或者 JDBC 驅(qū)動來連接 SequoiaDB。SequoiaDB 兼容標準 SQL 語法,也可采用 Java API 接口方式可以在簡單查詢的場景下獲得最高的性能。實際上,API 方式對

29、于互聯(lián)網(wǎng)應(yīng)用開發(fā)者而言,才是更加熟悉和習慣的數(shù)據(jù)訪問方式。SequoiaDB 支持完整的企業(yè)級數(shù)據(jù)庫管理的各項功能:審計日志可以記錄完整的數(shù)據(jù)訪問和數(shù)據(jù)操作;備份和恢復(fù);快照和列表(監(jiān)控);支持實時同城災(zāi)備、準實時異地災(zāi)備;支持靈活的強一致性和最終一致性配置;集群擴容;可視化管理頁面;批量數(shù)據(jù)加工:Spark SQL新三板市場投資者服務(wù)數(shù)據(jù)集市和全市場在線業(yè)務(wù)數(shù)據(jù)集市這兩個數(shù)據(jù)集市的 ETL 流程完成之后,需要對部分數(shù)據(jù)接口進行預(yù)處理,主要是多表關(guān)聯(lián)。由于數(shù)據(jù)倉庫不提供某些需要聚合運算的接口,所以改由數(shù)據(jù)集市進行一些數(shù)據(jù)加工處理,主要是關(guān)聯(lián)和聚合處理。加工之后的數(shù)據(jù)供集市應(yīng)用查詢。數(shù)據(jù)加工的模

30、式主要是 SQL 處理,類似于: INSERT INTO . SELECT . FROM A LEFT OUTERJOIN B ON (.) GROUP BY 。我們使用 Spark SQL 進行這樣的數(shù)據(jù)批量處理。Spark SQL 作為計算引擎,通過 SequoiaDB 提供的連接器可以無縫訪問SequoiaDB,并且盡量訪問本地節(jié)點。其架構(gòu)示意圖如圖六所示。圖六:Spark 連接 SequoiaDB上述流程的核心技術(shù)基礎(chǔ)是 Spark SQL 可以無縫平滑的訪問 SequoiaDB,而且都是分布式并行計算和分布式并行存儲引擎。SequoiaDB 提供了Spark 連接器。該連接器可以充分

31、下壓查詢條件到數(shù)據(jù)存儲節(jié)點,并且能夠根據(jù)數(shù)據(jù)分布特征自動的盡量從本地節(jié)點讀取數(shù)據(jù)。這樣的連接器充分利用了分布式并行系統(tǒng)的并發(fā)I/O 和計算優(yōu)勢。針對批量數(shù)據(jù)加工場景,我們對比了 Spark SQL 和 DB2 及 MySQL 做兩表關(guān)聯(lián)的性能。兩張表的數(shù)據(jù)量分別為 6000 萬條和 2000 萬條。 Spark SQL+SDB 耗時 10 秒之內(nèi),DB2 耗時 2 分鐘左右,而 MySQL 耗時過長沒有統(tǒng)計結(jié)果。SparkSQL+SDB 的架構(gòu)可以滿足我們的需要。實時數(shù)據(jù)流處理:Kafka + Spark streaming實時數(shù)據(jù)流技術(shù)可以將傳統(tǒng)的批量數(shù)據(jù) ETL 方式的數(shù)據(jù)延遲程度從 1

32、天(或者幾個小時)大幅度提升到 1 分鐘以內(nèi),可以將源系統(tǒng)數(shù)據(jù)變化及時同步到目標數(shù)據(jù)庫中,并且實時計算統(tǒng)計數(shù)據(jù)。實時數(shù)據(jù)入庫數(shù)據(jù)處理流程如圖七所示。圖七:實時數(shù)據(jù)入庫流程數(shù)據(jù)的源頭系統(tǒng)處,需要部署實時數(shù)據(jù)采集軟件或者應(yīng)用。源數(shù)據(jù)庫是MySQL 數(shù)據(jù)庫,所以采用了能夠?qū)崟r解析 binlog 的軟件愛可生的 DTS?;鹜镀睉?yīng)用將投票數(shù)據(jù)實時寫入 MySQL 數(shù)據(jù)庫投票明細表,由 DTS 服務(wù)集群實時將 MySQL 庫投票明細表的 BinLog 數(shù)據(jù)解析為 JSON 字符串格式的消息,插入 Kafka 集群的 topic 中。Spark Streaming 應(yīng)用實時的從 kafka 的消息隊列即

33、topic 中讀取消息。實時數(shù)據(jù)處理應(yīng)用拿到 Spark streaming 提供的數(shù)據(jù)流之后,根據(jù)統(tǒng)計規(guī)則做實時統(tǒng)計,將實時統(tǒng)計結(jié)果入 MySQL 庫,并將數(shù)據(jù)實時插入 SequoiaDB。庫中的投票數(shù)據(jù)再由 Spark SQL 應(yīng)用每天定時統(tǒng)計,并將統(tǒng)計的結(jié)果插入 MySQL 數(shù)據(jù)庫中,供基金投票應(yīng)用查詢每天的投票結(jié)果。基金投票實時數(shù)據(jù)讀取入庫應(yīng)用基于 Spark streaming 流處理技術(shù),應(yīng)用程序不間斷的從 kafka topic 中獲取 JSON 字符串類型的數(shù)據(jù),將獲取的一條條消息數(shù)據(jù)封裝為一個個 RDD,再將多個 RDD 封裝為一個 DStream(離散數(shù)據(jù)流)。SparkS

34、treaming 基于 Dstream 開始對數(shù)據(jù)進行第一步轉(zhuǎn)換,清洗,加工得到符合入庫條件的 DStream 流。最終使用 Spark Streaming 輸出流算子對數(shù)據(jù)進行輸出操作, 將數(shù)據(jù)通過 SequoiaDBJavaAPI 插入至 SequoiaDB。值得注意的是,Kafka 內(nèi)部配置多個 topic,每個 topic 對應(yīng)一張數(shù)據(jù)表。如果某張數(shù)據(jù)表的數(shù)據(jù)更新允許基于某個字段的分布式并發(fā),則將該表對應(yīng)的topic 設(shè)置為多個 partition 的,以通過并發(fā)機制提升數(shù)據(jù)吞吐量。否則,切不可配置為 partitioned,以免并發(fā)機制造成數(shù)據(jù)更新次序錯亂,從而造成數(shù)據(jù)集市的數(shù)據(jù)與數(shù)

35、據(jù)源不一致。我們在少量硬件資源情況下進行的性能壓測中得到的該實時數(shù)據(jù)流處理架構(gòu)的基本性能是 1.8 萬 TPS,并且延時少于 5 秒,完全可以滿足基金大會投票的數(shù)據(jù)同步需要??偨Y(jié)和展望項目成果投資者服務(wù)數(shù)據(jù)集市已成功上線實施,很好的滿足了如下業(yè)務(wù)需求:擺脫人工受理和手工查詢的現(xiàn)狀,全市場和新三板投資者可以通過 APP等渠道自助在線查詢,例如證券持有情況查詢、歷史交易明細查詢等;將數(shù)據(jù)集市單獨建設(shè),減輕了數(shù)據(jù)倉庫壓力,不影響數(shù)倉的主要功能, 即統(tǒng)計分析,實現(xiàn)數(shù)倉減負;幫助基金市場投資者投票系統(tǒng)實現(xiàn)大數(shù)據(jù)量存儲和實時在線查詢,及實時統(tǒng)計;高并發(fā)在線查詢情況下,依然提供快速響應(yīng)的能力,提升用戶體驗;7x24 持續(xù)在線服務(wù),不發(fā)生故障;數(shù)據(jù)庫高可用特性充分保障數(shù)據(jù)安全,不丟失數(shù)據(jù);完善了用戶身份驗證及數(shù)據(jù)權(quán)限管理,避免越權(quán)訪問;數(shù)據(jù)訪問的完全審計記錄,實現(xiàn)所有操作可追溯;通過上線前的性能測試及上線試運行,已經(jīng)體現(xiàn)了 NoSQL 數(shù)據(jù)庫+Spark 技術(shù)架構(gòu)應(yīng)用在數(shù)據(jù)集市的優(yōu)異性能。主要的性能指標如下:批量數(shù)據(jù)加載性能:大于 50MB/S,大于 5 萬條/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論