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

?

基于Spring Batch+Gemfire+CXF的金融大數(shù)據(jù)集成和整合

2020-09-02 01:22朱錚雄黃宇青
計算機應用與軟件 2020年8期
關鍵詞:調(diào)用數(shù)據(jù)處理處理器

朱錚雄 黃宇青

1(海際金控有限公司 上海 200120)2(上海市計算技術研究所 上海 200040)

0 引 言

巴塞爾協(xié)議Ⅲ[1]根據(jù)銀行交易數(shù)據(jù)與風險資產(chǎn)計算一級資本的充足率。銀行的各種交易數(shù)據(jù)的集成和整合是整個巴塞爾系統(tǒng)的核心。傳統(tǒng)方式采用腳本和數(shù)據(jù)庫存儲過程[2]進行數(shù)據(jù)整合,串聯(lián)起上游數(shù)據(jù)源系統(tǒng)和下游商業(yè)報告系統(tǒng)。隨著金融全球化的步伐加快,數(shù)據(jù)量呈幾何級增長,從原先面臨億級數(shù)據(jù)處理到面對每天萬億級以上的處理數(shù)據(jù),系統(tǒng)面臨極大的瓶頸。原先采用的全部是存儲過程,導致數(shù)據(jù)庫瓶頸大,單個節(jié)點擴展性能難,數(shù)據(jù)處理速度慢,存儲過程難以維護。同時下游報表系統(tǒng)也嚴重依賴上游數(shù)據(jù)庫[2],數(shù)據(jù)庫經(jīng)??D,嚴重制約整個巴塞爾系統(tǒng)運行的準確性、時效性。提升數(shù)據(jù)處理性能,提高自動化程度,降低系統(tǒng)之間耦合度是擺在整個銀行運維和開發(fā)面前的重要問題。

本文采用Spring Batch的系統(tǒng)構架方式,重新架構整個數(shù)據(jù)整合系統(tǒng),并結合目前業(yè)界最為流行的Web Service對數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)發(fā)布、數(shù)據(jù)持久化等各個應用模塊按照面向服務模式進行解耦合。本文將這些應用模塊按照面向服務的設計理念重新定義接口,使整個模塊有機地聯(lián)系起來,每個服務相互獨立并且可以以一種統(tǒng)一和通用的方式進行交互。當某個服務無法適應數(shù)據(jù)壓力時,可以進行水平擴展,在保持各個模塊獨立的擴展性的同時進行創(chuàng)新,確保了數(shù)據(jù)整合的可靠、穩(wěn)定、高效,且滿足巴塞爾系統(tǒng)的運行要求,成為海量數(shù)據(jù)整合的核心樞紐。采用這種整合方式,數(shù)據(jù)處理效率高,系統(tǒng)易于擴展以及被下游系統(tǒng)接入。

1 相關技術

1.1 Spring Batch

Spring Batch[3]是一款優(yōu)秀的、開源的大數(shù)據(jù)并行處理框架。通過Spring Batch可以構建出輕量級的健壯的并行處理應用,支持事務、并發(fā)、流程、監(jiān)控、縱向和橫向擴展,提供統(tǒng)一的接口管理和任務管理。它是一款基于 Spring 的企業(yè)批處理框架,通過它可以完成大數(shù)據(jù)并發(fā)批量處理。使用Spring Batch可以實現(xiàn)下列目標[4]:

(1) Batch Data:能夠處理大批量數(shù)據(jù)的導入、導出和業(yè)務邏輯計算;

(2) Automation:無須人工干預,能夠自動化執(zhí)行批量任務;

(3) Robustness:不會因為無效數(shù)據(jù)或錯誤數(shù)據(jù)導致程序崩潰;

(4) Reliability:通過跟蹤、監(jiān)控、日志及相關的處理策略(retry,skip,restart);

(5) Scaling:通過并發(fā)和并行技術實現(xiàn)應用的縱向和橫向擴展,滿足數(shù)據(jù)處理的性能需求。

Spring Batch良好的大數(shù)據(jù)批處理的性能和高可擴展性,使其被廣泛應用于各類自動化的數(shù)據(jù)遷徙系統(tǒng)中,包括超大數(shù)據(jù)的氣象系統(tǒng)[3]。

1.2 Gemfire

VMware vFabric Gemfire[5]是一個彈性可擴展分布式內(nèi)存數(shù)據(jù)管理平臺,可用于構建需要超高速數(shù)據(jù)交互的、具有高度可擴展能力的應用系統(tǒng)。它能夠跨越多臺虛擬機、多個 JVM 和多個Gemfire服務器來管理應用對象。使用動態(tài)備份和分區(qū),使它能提供多種平臺特性,例如:數(shù)據(jù)持久性、可靠的事件通報、連續(xù)查詢、通用的并行處理、高吞吐、低延遲、高擴展性、持續(xù)有效性和WAN分布。

基于以上特性,可以看出VMware vFabric Gemfire非常適合于巴塞爾風險業(yè)務管理系統(tǒng)的數(shù)據(jù)緩存層,它可以滿足本文對整合交易數(shù)據(jù)進行實時訪問的需求,其性能可以隨著需要彈性擴展,并且可以在多臺服務器上實現(xiàn)部署,實現(xiàn)海量內(nèi)存緩存池的要求。

1.3 Apache CXF

Apache CXF[6]是一個開源的Services框架,CXF支持使用Frontend編程API來構建和開發(fā)Services,如JAX-WS。這些Services可以支持多種協(xié)議,例如:SOAP、XML/HTTP、RESTful HTTP、CORBA,并且可以在多種傳輸協(xié)議上運行,例如:HTTP、JMS、JBI。CXF大大簡化了Services的創(chuàng)建,同時繼承了XFire傳統(tǒng),可以天然地與Spring進行無縫集成。

2 數(shù)據(jù)整合整體設計

2.1 功能需求分析

系統(tǒng)按照功能大致可以分成三個主要階段:大數(shù)據(jù)讀取,數(shù)據(jù)整合與映射以及數(shù)據(jù)計算與存儲。

(1) 大數(shù)據(jù)讀?。号扛咚僮x取交易流程上所有的數(shù)據(jù),包括交易對手的合同、實際交易、賬戶信息、證券產(chǎn)品信息以及價格,存入中間高速緩存中。

(2) 數(shù)據(jù)整合與映射:將高速緩存中的交易對手信息、交易系統(tǒng)、合約信息做一一映射,存入數(shù)據(jù)庫系統(tǒng)中,同時將證券產(chǎn)品中的固收產(chǎn)品單獨提取并寫入數(shù)據(jù)庫,根據(jù)緩存中的合約信息計算凈合約,將凈合約信息更新進系統(tǒng)中。

(3) 數(shù)據(jù)計算與存儲:先根據(jù)已經(jīng)映射好的數(shù)據(jù)做風險敞口計算,再根據(jù)抵押品現(xiàn)狀抵減風險敞口值,最后計算VaR、預期信用風險、客戶的風險評級和產(chǎn)品的敏感度值。

圖1為系統(tǒng)主要功能模塊。

圖1 系統(tǒng)功能模塊圖

各個模塊的功能如下:

協(xié)議/交易/賬戶(Agreement/Trade/Account)的BCP Loading:使用Sybase的BCP導入數(shù)據(jù)。BCP[7]基于DB-Library以并行的方式導入批量的數(shù)據(jù),目的是快速導入Agreement/Trades/Account等基礎信息進入數(shù)據(jù)庫中待用。

協(xié)議數(shù)據(jù)(Agreement):與交易對手簽訂的結算合約。

交易數(shù)據(jù)(Trades):實際交易數(shù)據(jù)。

賬戶數(shù)據(jù)(Account):交易對手等賬戶信息。

證券數(shù)據(jù)(Security):證券化的產(chǎn)品信息。

價格數(shù)據(jù)(Pricing):標價信息。

交易對手/機構映射(Counterparty/Legal Mapping):使用存儲過程處理,將交易對手信息(Legal指公司交易機構)與交易信息對應,存入系統(tǒng)表中。

主要數(shù)據(jù)映射(Master Data Mapping):使用存儲過程處理,將交易對手、交易信息以及合約信息數(shù)據(jù)一一匹配映射,存入系統(tǒng)表中。

固收數(shù)據(jù)處理(Fix Income Process):將固定收益證券(包括中長期國債、公司債券、市政債券和抵押債券等債務類證券)提取出來,存入數(shù)據(jù)庫中。

價格和數(shù)據(jù)處理(Pricing & Mapping Process):將標價信息與固定收益證券映射,對固定收益?zhèn)M行標價,用于計算市場風險,結果存入數(shù)據(jù)庫中。

凈合約映射(Netting Data Mapping):使用存儲過程對雙邊凈合約(Netting Agreement)的信用風險抵減計算,并且將得出的數(shù)據(jù)全部存儲更新在系統(tǒng)表中。

風險敞口計算(Analytical Calculation Processor):使用存儲過程對數(shù)據(jù)進行風險敞口的初步計算,并且將得出的數(shù)據(jù)全部存儲更新在系統(tǒng)表中。

抵押品計算(Collateral Mapping):使用存儲過程對抵押品進行的計算,并且抵減對應的風險敞口值,將得出的數(shù)據(jù)全部存儲更新在系統(tǒng)表中。

VaR計算(VaR Calculation):使用存儲過程計算在一定概率水平(置信度)下,交易數(shù)據(jù)價值在未來特定時期內(nèi)的最大可能損失,并將結果存入數(shù)據(jù)庫中。

CEF計算(CEF Calculate):使用存儲過程計算信用風險敞口預期值。

機構PDLC計算(Facility PDLC Calculation):根據(jù)交易數(shù)據(jù)更新調(diào)整機構客戶信用值,同時可以授予信用值。

敏感度映射(Sensitivity):使用存儲過程針對固定收益證券按照利率、利差和在投資收益率等數(shù)據(jù)敏感度對標的資產(chǎn)做數(shù)據(jù)映射,完成數(shù)據(jù)的敏感性值預設。

2.2 系統(tǒng)設計

按照上述的系統(tǒng)主要功能需求,數(shù)據(jù)整合核心服務層主要分為Spring Batch大數(shù)據(jù)加載和通用服務數(shù)據(jù)處理兩大部分。Spring Batch+Gemfire+CXF 輕量級架構系統(tǒng)結構如圖2所示。

圖2 核心服務層系統(tǒng)結構圖

本文利用Spring Batch批量讀入大文件,使用Mapper將文件數(shù)據(jù)映射成對象數(shù)據(jù),根據(jù)數(shù)據(jù)類型適配不同的數(shù)據(jù)處理器(Processor),并調(diào)用通用服務中與之對應的服務進行數(shù)據(jù)處理,將處理完成的數(shù)據(jù)存儲進數(shù)據(jù)庫,并發(fā)布在Gemfire cache中。

根據(jù)系統(tǒng)功能劃分,有如下處理器:

(1) 客戶處理器(Customer Processor):使用Spring Batch導入客戶及交易對手信息,并調(diào)用客戶服務獲取匹配交易對手信息。

(2) 協(xié)議處理器(Agreement Processor):使用Spring Batch導入合同信息,并調(diào)用協(xié)議計算服務獲取匹配合同以及凈值優(yōu)惠計算的信息。

(3) 機構處理器(Facility Processor):使用Spring Batch導入客戶信用信息,并且調(diào)用機構數(shù)據(jù)服務獲取客戶信用的信息。

(4) 證券處理器(Securities Processor):使用Spring Batch導入證券信息,并且調(diào)用證券化服務獲取證券的信息。

(5) 計算處理器(Calculate Processor):使用Spring Batch導入計算信息,并且調(diào)用計算服務和投資組合服務來計算整個信息。

(6) 敏感度處理器(Sensitivity Processor):使用Spring Batch導入敏感度信息,并且調(diào)用敏感度服務來比較和計算敏感度。

2.2.1 Spring Batch大數(shù)據(jù)加載

數(shù)據(jù)處理流程如圖3所示。

圖3 數(shù)據(jù)處理流程圖

本文將處理的數(shù)據(jù)分解為Job,并且為其定義屬性和基礎設施,通過Reader、Processor和Writer來實現(xiàn)數(shù)據(jù)業(yè)務處理、基于Pojo的開發(fā)以及領域對象描述。本文分別使用了如下組件:

(1) 批量任務加載器(Batch Loader):使用Autosys定時啟動Spring Batch開始處理文件。

(2) 任務庫(Job repository):用來持久化Job的元數(shù)據(jù),是所有Job的中心倉庫。

(3) 任務啟動器(Job launcher):從Job的中心倉庫取出一個Job,并且啟動。

(4) 任務(Job):Batch操作的基礎執(zhí)行單元。

(5) 步驟(Step):Job的一個階段,一個Job由一組Step構成,其中Tasklet Step包含一個事務過程,包含重復執(zhí)行、同步、異步等策略。

(6) 單元數(shù)據(jù)(Item):從數(shù)據(jù)源讀出或寫入的一條數(shù)據(jù)記錄。

(7) 單元數(shù)據(jù)讀取(Item Reader):從給定的數(shù)據(jù)源讀取Item集合。

(8) 單元數(shù)據(jù)業(yè)務處理(Item Processor):調(diào)用通用服務中對應的服務組件,對Item進行邏輯業(yè)務處理(包括數(shù)據(jù)映射和數(shù)值計算等。

(9) 單元數(shù)據(jù)寫入(Item Writer):把Item寫入數(shù)據(jù)源。

針對超級大數(shù)據(jù),我們還可以對Spring Batch進行橫向和縱向的擴展,確保整個系統(tǒng)能夠應付超大的數(shù)據(jù)集合壓力。對任務進行擴展的幾種方式如表1所示。

表1 擴展方式描述

每個Step都可以并行處理,Step并行處理模式使用了在一個節(jié)點上橫向處理,但隨著作業(yè)處理量的增加,如果一臺節(jié)點服務器無法滿足Job的處理,可以采用Partitioning Step的方式將多個機器節(jié)點組合起來完成一個Job的處理。如圖4所示,主服務器對Item讀、寫的處理邏輯進行分離,通常情況下將讀操作放在一個節(jié)點進行,將寫操作分發(fā)到另外的節(jié)點執(zhí)行。這樣做到了負載均衡和主從復制,理論上只要增加處理服務器,就幾乎可以無限提升Step的處理業(yè)務能力。

圖4 集群處理結構圖

定義任務舉例:

……

processor=″compositeItemProcessor″

writer=″cacheWriter″

commit-interval=″1000″ />

……

上述任務中,定義了一個交易數(shù)據(jù)的加載,定義使用fileReader批量文件讀取組件和使用Gemfire的緩存寫入cacheWrite,同時也定義了數(shù)據(jù)處理器Composite Item Processor映射。

核心處理器Spring配置舉例:

在此配置中,使用了數(shù)據(jù)組合類Composite Item Processor處理Transaction Item對象,把Mapping Processor、Customer Processor、Securities Processor、Agreement Processor和Facility Processor、Trade Level Calculation Processor和Remove Obj Reference Processor等單個處理器“串聯(lián)”在一起生成 Transaction 對象,這樣就可以通過調(diào)整配置文件,達到各個組件復用和靈活配置的目的。

以配置中的客戶處理Customer Processor為例子,在Spring中定義bean:

實現(xiàn)customerProcessor類:

public class CustomerProcessor implements ItemProcessor {

public BaseTransaction process(BaseTransaction txn) throws Exception {

setAccountDetail(txn);

return txn;

}

protected void setAccountDetail(BaseTransaction txn) {

this.accountDataService.matchAccounts(txn);

this.transactionService.processHouseAccounts(txn);

}

}

處理客戶數(shù)據(jù)需要進行兩個步驟:(1) 將客戶賬戶信息進行映射;(2) 將集團客戶內(nèi)部掛消帳內(nèi)部處理掉。

2.2.2 Gemfire做數(shù)據(jù)通用服務的DAO

通用服務主要提供核心業(yè)務邏輯處理,并以Web Service方式將數(shù)據(jù)發(fā)布在網(wǎng)絡上。其主要體系結構如圖5所示。

圖5 通用服務系統(tǒng)結構圖

本文主要采用面向接口的方式對通用服務進行設計。通過Java Interface。接口中對服務實現(xiàn)方法進行抽象定義,并對方法進行具體實現(xiàn)。通過面向接口編程,可以完成統(tǒng)一調(diào)用,應用在不同數(shù)據(jù)源上,比如對于同一個DAO接口,分別有Gemfire、jdbc、hibernate以及jms的實現(xiàn),當Service調(diào)用DAO的save功能時,可以同步完成對Gemfire、數(shù)據(jù)庫以及jms的數(shù)據(jù)存儲(發(fā)布)。

本文以交易服務為例,定義了Transaction Data Service的創(chuàng)建交易數(shù)據(jù)(create)接口:

public interface TransactionDataService {

public void create(BaseTransaction tx);

}

GemfireDAO通過對緩存節(jié)點Region塊的存儲傳入交易數(shù)據(jù),實現(xiàn)了創(chuàng)建交易數(shù)據(jù)(create)接口,在實現(xiàn)過程中,注意使用同步來確保數(shù)據(jù)的原子性:

public class TransactionGemfireDAOImpl implements TransactionDAO {

public BaseTransaction create(BaseTransaction tx) {

if(tx != null){ this.getTransactionRegion().put(tx.getId(),tx);

}

return tx;

}

public Region getTransactionRegion() {

String regionName = ″/transactionRegion″;

if(this.transactionRegion == null){

synchronized(this){

this.transactionRegion = RegionUtils.getRegionByName(regionName);

}

}

return transactionRegion;

}

}

2.2.3 CXF完成通用服務數(shù)據(jù)接口發(fā)布

通用服務通過CXF發(fā)布標準的Web Service,不僅可以做到水平橫向擴展,同時也方便與下游系統(tǒng)主要系統(tǒng)對接,按照其要求定義對應的接口,本文以敏感性分析為例,在保持其他條件不變的前提下,研究單個市場風險要素(利率、匯率、股票價格和商品價格)的變化可能會對金融工具或資產(chǎn)組合的收益或經(jīng)濟價值產(chǎn)生的影響。

在Web.xml中除了傳統(tǒng)加載Spring配置文件外,還需要加載CXF的Servlet,完成Web Service的映射:

CXF

CXFServelt

org.apache.cxf.transport.servelt.CSFServlet

CXFServelt

/*

在Spring中定義bean:

本文還定義了Sensitivity接口:

@WebService

public class SensitivityWebSerivce implements SensitivityService {

@WebMethod

public String getTransactionss(@Webparam(name=″asOfDate″)String asOfDate, @WebParam(name=″tradeType″)){

Criteria criteria = new Criteria(asOfDate, tradeType);

return transactionDataService.getTransactions(criteria);

}

}

本文通過定義一個敏感度的查詢數(shù)據(jù)接口,直接調(diào)用內(nèi)部的Transaction Service查詢接口,間接地把內(nèi)部交易服務標準的Web Service的方式提供給下游系統(tǒng)使用。同時因為采用的是分布式部署,系統(tǒng)擴展很方便,下游運行報表期間,直接增加CXF的節(jié)點就輕松應對了高訪問需求,同時隔離了對數(shù)據(jù)庫的壓力。

3 應用效果

本文在使用Spring Batch+Gemfire+CXF框架重構了整個整合系統(tǒng)后,在銀行內(nèi)部管理系統(tǒng)中的3臺8核CPU的虛擬機(SpringBatch 80 GB內(nèi)存,Gemfire 120 GB內(nèi)存,CXF80 GB內(nèi)存)上進行了UAT環(huán)境測試實驗。計算處理1.4 TB數(shù)據(jù)所需時間從2小時變?yōu)?0分鐘。此外,通過提升部分風險計算服務器CPU性能,進一步提升了空間。下游系統(tǒng)讀取系統(tǒng)穩(wěn)定性大大增強,沒有再發(fā)生因為下游系統(tǒng)查詢導致核心數(shù)據(jù)庫宕機的情況,極大地節(jié)省了人力維護成本和機器運行成本。

4 結 語

傳統(tǒng)巴塞爾數(shù)據(jù)整合系統(tǒng)依賴存儲過程和ETL工具,系統(tǒng)復雜,性能較差,而Spring Batch 和Gemfire的整合應用在業(yè)界整合使用案例較少。本文提出一套全新的基于Spring Batch+Gemfire+CXF輕量級應用架構來處理海量的巴塞爾整合數(shù)據(jù),用于替代之前大量的存儲過程的設計。整個系統(tǒng)通過實際測試、運行,表現(xiàn)良好,具有各層間低耦合、高擴展性、高可靠性的特點,性能遠超傳統(tǒng)依賴存儲過程的數(shù)據(jù)整合系統(tǒng)?;赟pring Batch+Gemfire+CXF架構是一個行之有效的輕量級、大數(shù)據(jù)、低成本應用整合解決方案,可以推廣到大數(shù)據(jù)、高可用、企業(yè)級、可伸縮的企業(yè)、銀行等應用開發(fā)中。

猜你喜歡
調(diào)用數(shù)據(jù)處理處理器
認知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補與極大似然估計法*
基于低頻功率數(shù)據(jù)處理的負荷分解方法
無人機測繪數(shù)據(jù)處理關鍵技術及運用
高層建筑沉降監(jiān)測數(shù)據(jù)處理中多元回歸分析方法的應用研究
高層建筑沉降監(jiān)測數(shù)據(jù)處理中多元回歸分析方法的應用研究
系統(tǒng)虛擬化環(huán)境下客戶機系統(tǒng)調(diào)用信息捕獲與分析①
基于屬性數(shù)據(jù)的系統(tǒng)調(diào)用過濾方法
ADI推出新一代SigmaDSP處理器
利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
火線熱訊