無論是股票交易系統(tǒng),還是數(shù)字貨幣交易系統(tǒng),都離不開撮合交易引擎,這是交易平臺的心臟。同時(shí),一個(gè)優(yōu)秀的架構(gòu)設(shè)計(jì)也會讓交易平臺的運(yùn)維和持續(xù)開發(fā)更加容易。本文基于對開源項(xiàng)目的深入研究,總結(jié)了數(shù)字貨幣交易系統(tǒng)的架構(gòu)設(shè)計(jì)。
關(guān)于撮合交易系統(tǒng)
撮合技術(shù)主要是從數(shù)據(jù)庫撮合技術(shù)向內(nèi)存撮合技術(shù)發(fā)展,這是因?yàn)閿?shù)據(jù)庫撮合技術(shù)越來越無法滿足金融交易對于高可靠性、高性能、強(qiáng)安全性、可擴(kuò)展性以及易維護(hù)性的需求。金融(幣幣)交易撮合系統(tǒng)中包括以下幾個(gè)核心模塊:
用戶:終端用戶委托報(bào)價(jià)與數(shù)量,生成訂單發(fā)送至交易平臺。
網(wǎng)關(guān):負(fù)責(zé)收集用戶訂單,并將其派發(fā)給撮合引擎。
撮合引擎:交易系統(tǒng)中的核心部分,用于接收訂單并根據(jù)業(yè)務(wù)邏輯實(shí)現(xiàn)訂單撮合同時(shí)生成交易記錄,隨后給予用戶交易結(jié)果反饋。
數(shù)據(jù)庫:用來存放交易過程中的訂單和交易記錄,實(shí)現(xiàn)數(shù)據(jù)持久化。
消息隊(duì)列:一般用于訂單消息的傳輸
關(guān)于技術(shù)選型
一個(gè)交易所平臺的技術(shù)架構(gòu)主要考慮安全性、分布式、易擴(kuò)展、容錯(cuò)性、低延時(shí)、高并發(fā)等特性,以及熔斷機(jī)制、服務(wù)注冊和發(fā)現(xiàn)、消息服務(wù)、服務(wù)網(wǎng)關(guān)、安全認(rèn)證、內(nèi)存數(shù)據(jù)庫、關(guān)系型數(shù)據(jù)庫等各種選項(xiàng),最終形成了如下技術(shù)選型:
分布式基礎(chǔ)進(jìn)行架構(gòu)SpringCloud與Dubbo之間二選一,由于SpringCloud更加知名,SpringCloud的程序員更好招聘,有利于系統(tǒng)的長期運(yùn)維升級,而且SpringCloud是基于SpringBoot開發(fā),比較有親切感,所以選擇了SpringCloud,其實(shí)由于阿里系的強(qiáng)大影響,國內(nèi)Dubbo使用更加廣泛,不同的團(tuán)隊(duì)可以根據(jù)自己的情況選擇。
引入Hystrix斷路器作為容錯(cuò)保護(hù)模塊,防止單個(gè)服務(wù)的故障,耗盡整個(gè)撮合系統(tǒng)容器的線程資源,避免分布式環(huán)境里大量級聯(lián)失敗。對通過第三方客戶端訪問依賴服務(wù)出現(xiàn)失敗、拒絕、超時(shí)或短路時(shí)執(zhí)行回退邏輯。
采用Eureka作為服務(wù)注冊與發(fā)現(xiàn)中心,實(shí)現(xiàn)中間層服務(wù),以達(dá)到負(fù)載均衡和中間層服務(wù)故障轉(zhuǎn)移的目的。
服務(wù)網(wǎng)關(guān)Spring Cloud Gateway與 Zuul的選型,選擇了Zuul,因?yàn)槊侄桃恍?/p>
引入SpringCloud Security安全認(rèn)證模塊用于構(gòu)建安全的應(yīng)用程序和服務(wù),SpringCloud Security在Spring Boot和Spring Security OAuth2的基礎(chǔ)上,可以快速創(chuàng)建和實(shí)現(xiàn)常見的安全認(rèn)證方式,如單點(diǎn)登錄,令牌中繼和令牌交換等。
引入Redis作為內(nèi)存數(shù)據(jù)庫,兼做系統(tǒng)數(shù)據(jù)緩存和內(nèi)存計(jì)算。
使用MySQL作為關(guān)系數(shù)據(jù)庫,性能測試非常過關(guān),而且對熟悉MYSQL的程序員非常友好。
消息隊(duì)列中間件MQ采用了Kafka,具有超高性能體現(xiàn)。
以上就是ADT幣上線了哪些交易所(比特幣怎么交易)的詳細(xì)內(nèi)容,更多請關(guān)注本站其它相關(guān)文章!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。