實(shí)例:使用Java構(gòu)建股指期貨交易系統(tǒng)
之前51cto曾報(bào)道過JAVA用TCP實(shí)現(xiàn)反向連接屏幕監(jiān)視的實(shí)例,本文通過股指期貨交易系統(tǒng),分析使用Java相關(guān)技術(shù)實(shí)現(xiàn)的系統(tǒng)架構(gòu),以及Java技術(shù)的優(yōu)勢,其中的關(guān)鍵技術(shù)包括JMS,SOA/WebService,Appliction Server Cluster等。
1 股指期貨交易系統(tǒng)簡介
在本文中所提到的股指期貨、期權(quán)交易系統(tǒng),均指券商端的期貨、期權(quán)交易系統(tǒng)。期貨客戶通過該交易系統(tǒng)連接到交易所撮合成交平臺(tái)。系統(tǒng)提供客戶下單,行情信息,資金結(jié)算和風(fēng)險(xiǎn)控制等功能。
和股票交易系統(tǒng)類似,股指期貨交易系統(tǒng)提供在線下單,行情查詢等功能。和股票交易系統(tǒng)相比,期貨、期權(quán)交易在業(yè)務(wù)上要求更復(fù)雜的風(fēng)險(xiǎn)控制和資金結(jié)算等功能。在技術(shù)架構(gòu)上,由于交易的標(biāo)的物是指數(shù)或期權(quán)、貴金屬、全球市場等,市場行情數(shù)據(jù)變化更頻繁、相比于股票市場,風(fēng)險(xiǎn)更大。對系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性要求更高。
在現(xiàn)代期貨、期權(quán)交易中,有相當(dāng)多的投資者進(jìn)行快速、頻繁的交易,追求短期交易機(jī)會(huì)。對券商的交易系統(tǒng)要求能提供一定程度的程序化交易功能和靈活的交易方式。面對激烈的商業(yè)競爭,券商應(yīng)該能夠提供多樣化的交易方式、快速推出新的交易模式以吸引更多的投資者。在整個(gè)金融期貨交易系統(tǒng)的規(guī)劃中,應(yīng)當(dāng)考慮到以下幾點(diǎn):
1)交易系統(tǒng)應(yīng)該提供一個(gè)統(tǒng)一的交易平臺(tái),以支持多種產(chǎn)品交易,包括金融期貨、期權(quán)、本地和全球市場
2)系統(tǒng)應(yīng)該支持多種交易渠道,包括可下載的交易客戶端,WEB交易、電話委托和客戶代理委托等
3)系統(tǒng)規(guī)劃應(yīng)分開企業(yè)核心信息服務(wù)和外圍應(yīng)用系統(tǒng),以支持持續(xù)豐富的外圍應(yīng)用系統(tǒng)
4)面對激烈的商業(yè)競爭和業(yè)務(wù)變革,要求系統(tǒng)支持快速開發(fā)、部署和持續(xù)的新功能發(fā)布。
2 系統(tǒng)業(yè)務(wù)框架
本章節(jié)主要介紹股指期貨交易的業(yè)務(wù)框架,從高層次簡介期貨交易系統(tǒng)的功能。整個(gè)股指期貨交易系統(tǒng)包括下面幾個(gè)大的部分:核心服務(wù)系統(tǒng)、券商內(nèi)部運(yùn)行維護(hù)系統(tǒng)、交易和行情借口、客戶端交易終端系統(tǒng)等。
◆核心服務(wù)系統(tǒng)
提供股指期貨系統(tǒng)的核心功能,包括訂單處理,交易管理、行情服務(wù)、風(fēng)險(xiǎn)管理、基礎(chǔ)數(shù)據(jù)服務(wù)、BackOffice服務(wù)(Position結(jié)算等)、數(shù)據(jù)中心(資金結(jié)算等)服務(wù)。這些功能以組件或服務(wù)的方式提供外部應(yīng)用系統(tǒng)使用。
◆運(yùn)行維護(hù)系統(tǒng)
運(yùn)行服務(wù)系統(tǒng)為交易系統(tǒng)運(yùn)行提供所有必要的操作支持,包括BackOffice操作終端,風(fēng)險(xiǎn)管理/監(jiān)控終端、DataCenter操作終端、Dealer/客戶Agent交易終端等。這些系統(tǒng)運(yùn)行在券商的LAN之內(nèi),提供給券商的各類用戶使用。
◆統(tǒng)一交易、行情服務(wù)接口
期貨交易系統(tǒng)的核心業(yè)務(wù)服務(wù)提供給WLAN或其他渠道的用戶使用,要通過一個(gè)統(tǒng)一的交易和行情服務(wù)接口,以面向服務(wù)(SOA)的方式和其他外部交易終端集成。
◆交易終端
交易終端通過統(tǒng)一交易、行情服務(wù)接口和核心系統(tǒng)交互。這些交易終端包括可下載的獨(dú)立客戶端、WEB頁面客戶端、電話客戶端(通過語言模塊轉(zhuǎn)化)等。在技術(shù)架構(gòu)章節(jié),涉及的客戶端為獨(dú)立客戶端。
◆統(tǒng)一網(wǎng)關(guān)(交易、行情)
核心服務(wù)通過統(tǒng)一的交易和行情網(wǎng)關(guān)連接到本地交易所和全球市場。 #p#
3 技術(shù)方案規(guī)劃
基于核心交易系統(tǒng)的性質(zhì),在技術(shù)方案的規(guī)劃時(shí),需考慮以下因素–
◆高性能要求(Performance)
相比于其他管理信息系統(tǒng),股指期貨交易系統(tǒng)要求更高的性能,包括行情數(shù)據(jù)的實(shí)時(shí)刷新,交易訂單處理等。
◆可擴(kuò)充性要求(Scalability)
股指期貨交易系統(tǒng)通常支持較多的并發(fā)用戶,且隨著業(yè)務(wù)的發(fā)展,交易客戶持續(xù)或快速增長,這要求系統(tǒng)有能力易于擴(kuò)充以應(yīng)付系統(tǒng)負(fù)載的增長。
◆高穩(wěn)定性要求(Availability)
系統(tǒng)穩(wěn)定性對于交易系統(tǒng)的重要性不言而喻。系統(tǒng)有能力在整體架構(gòu)上防止單點(diǎn)失敗,能有一定程度上的故障恢復(fù)(Fail-over)的能力。
◆與其他系統(tǒng)集成
隨著現(xiàn)在金融行業(yè)的快速發(fā)展和業(yè)務(wù)創(chuàng)新,交易系統(tǒng)也要求能和多個(gè)外部的系統(tǒng)包括第三方系統(tǒng)集成的能力,包括企業(yè)內(nèi)部的客戶管理系統(tǒng)(CRM),交易所、銀行等。
◆支持快速開發(fā)和業(yè)務(wù)創(chuàng)新
市場競爭也是時(shí)間的競爭,必然要求整個(gè)交易系統(tǒng)從規(guī)劃、開發(fā)和部署要求能夠在盡可能短的時(shí)間完成。另外,金融行業(yè)業(yè)務(wù)創(chuàng)新在不斷加快,新的交易方式、測略不斷出現(xiàn),必然要求IT系統(tǒng)能夠快速反映和支持這種變革。在技術(shù)選型時(shí),必須考慮到技術(shù)方案能夠滿足這種要求。
綜上所述,使用的技術(shù)方案要能夠解決上面的要求。目前,在期貨、股票交易系統(tǒng)中,所采用的技術(shù)主要有兩種C/C++和Java.國內(nèi)業(yè)界較多的采用C/C++實(shí)現(xiàn)核心交易系統(tǒng),本文主要闡述使用Java技術(shù)來實(shí)現(xiàn)整個(gè)交易核心和客戶端。相比較C/C++,Java技術(shù)在滿足交易系統(tǒng)要求時(shí),有如下特征:
◆性能要求(Performance)
與C/C++技術(shù)相比,使用Java構(gòu)建核心交易系統(tǒng),性能問題可能是首要的考慮點(diǎn)。但隨著Java和優(yōu)化技術(shù)的發(fā)展,Java的運(yùn)行性能比早期有了大幅提高,已廣泛用于服務(wù)器程序和實(shí)時(shí)應(yīng)用。在另一方面,性能問題總是和具體要求相關(guān)聯(lián),只要滿足系統(tǒng)的性能指標(biāo),使用Java應(yīng)該是一個(gè)可行的選項(xiàng)。在筆者的項(xiàng)目實(shí)踐中,Java用來構(gòu)建實(shí)時(shí)交易系統(tǒng),配合合理的技術(shù)架構(gòu),完全能滿足系統(tǒng)的性能要求。
◆擴(kuò)充性(Scalability)
使用Java相關(guān)技術(shù)和中間件如WebSphere,WebLogic等,構(gòu)建一個(gè)高并發(fā)性的應(yīng)用系統(tǒng)有著相當(dāng)成熟的行業(yè)實(shí)踐,和快速實(shí)現(xiàn)的能力。
◆穩(wěn)定性要求(Availability)
相比較于C技術(shù),借助于Java中間件軟件,實(shí)現(xiàn)服務(wù)器應(yīng)用的Loadbalance和Fail-over是一項(xiàng)相當(dāng)便捷和成熟的技術(shù)。
◆與其他系統(tǒng)集成
Java/J2EE是一個(gè)開放的技術(shù)標(biāo)準(zhǔn),有著廣泛的行業(yè)和開發(fā)社區(qū)支持,能夠較快并易于和其他系統(tǒng)集成。
◆支持快速開發(fā)和業(yè)務(wù)創(chuàng)新
相比于C/C++,Java的快速開發(fā)能力顯而易見。由于大量成熟的開源框架、基礎(chǔ)組件的出現(xiàn),在常見的企業(yè)系統(tǒng)開發(fā)中,使得Java的開發(fā)效率遠(yuǎn)遠(yuǎn)高于使用C/C++技術(shù),能夠較快速的實(shí)現(xiàn)新的業(yè)務(wù)功能。
綜上所述,Java技術(shù)能夠全面滿足股指期貨交易系統(tǒng)的要求,由于借助于中間件技術(shù)解決Load balance,Fail-over等關(guān)鍵性問題,使得開發(fā)者更關(guān)注于業(yè)務(wù)的實(shí)現(xiàn),大大縮短了整個(gè)系統(tǒng)的開發(fā)時(shí)間和人力成本。同時(shí)Java語言的開發(fā)效率也使得新業(yè)務(wù)的創(chuàng)新能夠在系統(tǒng)上得以快速實(shí)現(xiàn)。這些因素使得采用Java構(gòu)建股指期貨交易系統(tǒng)是一個(gè)可行和較好的選擇。 #p#
4 技術(shù)架構(gòu)
本章節(jié)主要介紹股指期貨的技術(shù)架構(gòu),從總體技術(shù)框架、運(yùn)行物理環(huán)境等方面舉個(gè)介紹。
4.1 總體技術(shù)框架
◆客戶端
客戶端有兩類應(yīng)用程序,一類是基于Swing的GUI Application如可下載的交易客戶端,數(shù)據(jù)維護(hù)終端等,另一類是Web Based Application如web頁面交易應(yīng)用等,對GUI Applcition,系統(tǒng)設(shè)計(jì)GUIframework幫助所有的GUI Application開發(fā)。像對應(yīng)于Web Applciation,可以采用主流的Web MVC Framework.對應(yīng)Internet客戶端Application,采用WebService技術(shù)和服務(wù)器進(jìn)行交互。對應(yīng)訂單消息、市場行情采用Message系統(tǒng)。
◆服務(wù)器端
服務(wù)器端的主要業(yè)務(wù)服務(wù),采用WebService方式發(fā)布,以供客戶端調(diào)用。市場行情服務(wù)接受來自市場的信息(MessageDrivenbean),進(jìn)行解析后發(fā)送給客戶端。
具體的業(yè)務(wù)組件可使用Spring Ioc等框架技術(shù)。
◆消息網(wǎng)關(guān)
使用Socket或API調(diào)用的方式,接受來自市場的消息。進(jìn)行處理后發(fā)送給消息中間件。
◆數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)存儲(chǔ)可采用成熟的數(shù)據(jù)存儲(chǔ)框架如Hibernate等。
4.2 物理運(yùn)行環(huán)境
應(yīng)用程序部署要考慮系統(tǒng)的Load Balance和Fail-over等功能,利用Application Server和Message Middleware的Cluster功性去確保系統(tǒng)的穩(wěn)定性和可擴(kuò)充性。
5 小結(jié)
用Java開發(fā)分布式大型應(yīng)用系統(tǒng),技術(shù)相當(dāng)成熟,利用基于服務(wù)、組件和成熟的開源框架和中間件服務(wù)器,能夠快速構(gòu)建大型的股指期貨交易系統(tǒng),并易于擴(kuò)充和維護(hù)。
【編輯推薦】