關(guān)鍵詞:【賬戶系統(tǒng)】【撮合引擎】【清算系統(tǒng)】【金融級賬戶體系】【復(fù)式記賬法】【多邊凈額清算】
1. 交易系統(tǒng)應(yīng)用場景
什么是交易系統(tǒng)?從簡單的概念上講氓鄙,交易系統(tǒng)為商品市場提供商品的集中交易及報價探遵、撮合至壤、清算、交割桨吊、登記等服務(wù)。例如:證券交易系統(tǒng)為證券市場提供證券的集中交易及報價、撮合沸手、清算、交割注簿、登記等服務(wù)契吉;數(shù)字貨幣交易系統(tǒng)為數(shù)字貨幣市場提供數(shù)字貨幣的集中交易及報價、撮合诡渴、清算捐晶、交割、登記等服務(wù)妄辩;另外還有白銀交易系統(tǒng)惑灵、黃金交易系統(tǒng)、貴金屬交易系統(tǒng)眼耀、藥材交易系統(tǒng)英支、藝術(shù)品交易系統(tǒng)等等。
可見交易系統(tǒng)應(yīng)用場景比較廣泛哮伟,現(xiàn)在我們深入淺出探索交易系統(tǒng)的基礎(chǔ)設(shè)計干花,為感興趣的朋友提供交易系統(tǒng)相關(guān)的基礎(chǔ)知識、常見問題楞黄、改進(jìn)策略池凄、架構(gòu)設(shè)計等內(nèi)容,讓從事交易系統(tǒng)研發(fā)與應(yīng)用的朋友更高維度的審視交易系統(tǒng)架構(gòu)鬼廓,更深入的研究交易系統(tǒng)核心修赞,更清楚的掌握交易系統(tǒng)應(yīng)用。
閑話不說,我們進(jìn)入正題柏副。
2. 交易系統(tǒng)的不同視角
視角一:從開發(fā)設(shè)計視角來看:我們按照系統(tǒng)層次進(jìn)行劃分勾邦,可以將交易系統(tǒng)劃分為外圍系統(tǒng)、核心系統(tǒng)割择;外圍系統(tǒng)包括新聞系統(tǒng)眷篇、公告系統(tǒng)、用戶安全系統(tǒng)荔泳、錢包系統(tǒng)蕉饼、OTC系統(tǒng)等等,核心系統(tǒng)包括【撮合引擎】玛歌、【賬戶系統(tǒng)】昧港、【清算系統(tǒng)】;
視角二:從用戶體驗視角來看:對于交易系統(tǒng)來說支子,客戶最關(guān)心交易系統(tǒng)的三個指標(biāo):正確性创肥、高效性、高并發(fā)值朋;
【指標(biāo)一:正確性】:指的是系統(tǒng)業(yè)務(wù)鏈設(shè)計的正確性叹侄,業(yè)務(wù)執(zhí)行的正確性,業(yè)務(wù)核算的正確性以及業(yè)務(wù)異常處理的正確性昨登;對于交易系統(tǒng)的正確性來說趾代,我們99%關(guān)注是賬戶信息、賬戶資金丰辣、賬戶流水等業(yè)務(wù)的正確性撒强。主要受到撮合系統(tǒng)、賬戶系統(tǒng)的影響笙什;
【指標(biāo)二:高效性】:指的是一個完整業(yè)務(wù)鏈執(zhí)行完成尿褪,所需要的最短時間。例如:交易系統(tǒng)系統(tǒng)的委托交易業(yè)務(wù)鏈得湘;在兩筆買賣單可成交情況下杖玲,委托交易業(yè)務(wù)鏈由掛單、撮合淘正、成交摆马、清算四個步驟構(gòu)成。該業(yè)務(wù)鏈的執(zhí)行最短時間為【高效性】=【掛單時間】+【撮合時間】+【成交時間】+【清算時間】鸿吆。主要受到撮合引擎囤采、清算系統(tǒng)的影響;
【指標(biāo)三:高并發(fā)】:指的是在極短單位時間內(nèi)惩淳,極多個請求同時發(fā)起到服務(wù)器蕉毯,服務(wù)器對多個請求進(jìn)行處理乓搬。隨著交易系統(tǒng)的用戶量不斷增加,我們會采用多種手段改進(jìn)交易系統(tǒng)的設(shè)計實現(xiàn)代虾,滿足交易系統(tǒng)的高并發(fā)要求进肯。主要受到撮合引擎、賬戶體系棉磨、清算系統(tǒng)的影響江掩;
備注一:目前交易系統(tǒng)號稱撮合引擎百萬TPS,但是乘瓤,撮合引擎百萬TPS僅是委托交易業(yè)務(wù)鏈的一個撮合環(huán)節(jié)的處理效率环形,清算效率假如為100TPS,那么完整的委托交易業(yè)務(wù)鏈的TPS就是100TPS衙傀。對于百萬TPS撮合引擎抬吟,大家可以當(dāng)作是個宣傳口號,不可以應(yīng)用到技術(shù)研發(fā)的討論范疇统抬。
備注二:高并發(fā)和高效性是緊密相關(guān)的火本,提高應(yīng)用的性能,是肯定可以提高系統(tǒng)的并發(fā)能力的蓄喇。
在分析過程中发侵,我們可以看出交易系統(tǒng)核心三系統(tǒng)【撮合引擎】【賬戶系統(tǒng)】【清算系統(tǒng)】對交易系統(tǒng)的【正確性】【高效性】【高并發(fā)】具有重要的影響交掏。
3. 核心三系統(tǒng)初步探索
【系統(tǒng)一:撮合引擎】
【現(xiàn)狀描述】:目前在網(wǎng)上傳播最多的當(dāng)屬【撮合引擎】的設(shè)計資料妆偏。交易系統(tǒng)的撮合引擎伴隨著90年代的證券交易系統(tǒng)發(fā)展而逐步完善。
【發(fā)展歷程】:最早的數(shù)據(jù)庫撮合方式 -> 有鎖內(nèi)存撮合方式(有鎖內(nèi)存隊列)-> 無鎖內(nèi)存撮合方式(無鎖環(huán)形內(nèi)存隊列)盅弛。
【影響分析】:目前撮合引擎的設(shè)計與實現(xiàn)已經(jīng)穩(wěn)定钱骂,實現(xiàn)百萬TPS的撮合效率也是很容易實現(xiàn)的。
【系統(tǒng)二:賬戶系統(tǒng)】
【現(xiàn)狀描述】:現(xiàn)有的交易系統(tǒng)挪鹏,除了證券交易所這些用戶群體巨大见秽、業(yè)務(wù)復(fù)雜性高,具備完善的賬戶系統(tǒng)設(shè)計讨盒。一些用戶體量小、業(yè)務(wù)簡單的數(shù)幣貨幣返顺、白銀禀苦、黃金、貴金屬等交易所遂鹊,通常采用的都是【單式記賬法】振乏,記錄用戶的資金信息。目前交易系統(tǒng)的賬戶系統(tǒng)設(shè)計資料網(wǎng)上公開的信息并完整秉扑,也沒有形成賬戶系統(tǒng)解決方案慧邮。本系列文章后續(xù)會逐步介紹如何將【單式記賬法】普通賬戶系統(tǒng)升級為【復(fù)式記賬法】金融級賬戶系統(tǒng)。
【發(fā)展歷程】:由最早的【用戶賬戶一體系統(tǒng)】升級為用戶賬戶分離的【單式記賬法-普通賬戶系統(tǒng)】,隨著金融業(yè)務(wù)的復(fù)雜度再次增加误澳,將【單式記賬法-普通賬戶系統(tǒng)】繼續(xù)升級為【復(fù)式記賬法-金融級賬戶系統(tǒng)】耻矮。
【影響分析】:賬戶系統(tǒng)的設(shè)計對交易系統(tǒng)的【正確性】【高效性】【高并發(fā)】都起著重要的作用。例如普通賬戶系統(tǒng)經(jīng)常遇到的問題:
-
1. 【影響正確性】賬戶設(shè)計缺失脓匿,系統(tǒng)無法進(jìn)行完整的記賬淘钟、對賬、查賬等操作陪毡;
1.1 問題一:賬戶的資金經(jīng)常出現(xiàn)錯誤米母,甚至出現(xiàn)資金為負(fù)數(shù);
1.2 問題二:賬戶流水記錄不完整毡琉,系統(tǒng)運行一段時間铁瞒,對賬戶無法進(jìn)行查賬、對賬桅滋;
-
2. 【影響高效性慧耍、高并發(fā)】賬戶設(shè)計沖突,數(shù)據(jù)庫死鎖丐谋,系統(tǒng)的TPS得不到提升芍碧;
- 2.1 問題三:多業(yè)務(wù)鏈同時操作賬戶余額表,造成數(shù)據(jù)庫死鎖号俐,系統(tǒng)異常停機泌豆;
【系統(tǒng)三:清算系統(tǒng)】
【現(xiàn)狀描述】:當(dāng)下的清算系統(tǒng)與賬務(wù)系統(tǒng)處境相似,同樣被隱藏在撮合引擎的光環(huán)下吏饿,不被人們所熟知踪危。
【發(fā)展歷程】:清算在用戶量小的情況下,采取一筆一筆的清算方式猪落,實現(xiàn)簡單贞远;但是,在用戶量特大的情況下笨忌,合并成交筆數(shù)(多筆成交記錄合并為一筆)才是比較好的清算方案蓝仲。將【單邊凈額清算】方式升級為【多邊凈額清算】方式
【影響分析】:影響委托交易業(yè)務(wù)鏈的清算環(huán)節(jié),進(jìn)而影響交易系統(tǒng)的【高效性】【高并發(fā)】
4. 核心三系統(tǒng)發(fā)展現(xiàn)狀
【系統(tǒng)一:賬戶系統(tǒng)】
- 【發(fā)展階段】:大部分交易系統(tǒng)的賬戶系統(tǒng)處于<單式記賬法-普通賬戶系統(tǒng)>的階段官疲,準(zhǔn)備進(jìn)行<復(fù)式記賬法-金融級賬戶系統(tǒng)>的階段袱结;
- 【難點障礙】:
- 賬務(wù)核算流程不明確;
- 賬務(wù)核算結(jié)果不正確袁余;
- 用戶的賬戶出現(xiàn)錯誤擎勘,甚至出現(xiàn)負(fù)資產(chǎn)
- 【反面教材】:
- 隨意修改數(shù)據(jù)庫表結(jié)構(gòu)、任意添加字段颖榜,保證賬務(wù)核算結(jié)果正確棚饵。由于修改沒有考慮影響范圍煤裙,導(dǎo)致賬戶系統(tǒng)越來越復(fù)雜,問題不斷擴(kuò)散噪漾。硼砰;
- 【應(yīng)對策略】:
- 應(yīng)用《銀行會計學(xué)》的基礎(chǔ)理論;
- 進(jìn)行金融賬戶的設(shè)計欣硼、實施题翰、驗證;
【系統(tǒng)二:撮合系統(tǒng)】
- 【發(fā)展階段】:大部分交易系統(tǒng)的撮合系統(tǒng)處于第一诈胜、二階段豹障,準(zhǔn)備對撮合系統(tǒng)進(jìn)行改造升級;
- 【難點障礙】:
- 撮合過程焦匈、系統(tǒng)重啟等階段丟失委托單血公;
- 撮合業(yè)務(wù)流程出現(xiàn)未知異常,導(dǎo)致撮合失敗缓熟,且系統(tǒng)崩潰累魔;
- 【反面教材】:
- 改造負(fù)責(zé)人不關(guān)注系統(tǒng)全局現(xiàn)狀,直接按照經(jīng)驗進(jìn)行系統(tǒng)模塊優(yōu)化升級够滑;
- 改造負(fù)責(zé)人對問題不進(jìn)行影響分析垦写,對撮合系統(tǒng)進(jìn)行打補丁,導(dǎo)致系統(tǒng)越來越復(fù)雜彰触,問題越來越多梯投;
- 【應(yīng)對策略】:
- 構(gòu)建完整的系統(tǒng)業(yè)務(wù)流程資料,并隨著系統(tǒng)升級不斷調(diào)整資料的正確性渴析;
- 構(gòu)建全面的系統(tǒng)故障分析資料晚伙,并識別所有可能性異常吮龄;進(jìn)而俭茧,對異常進(jìn)行分層分級的歸納;最終漓帚,制定出合理的異常處理機制方案母债;
【系統(tǒng)三:清算系統(tǒng)】
- 【發(fā)展階段】:清算系統(tǒng)在目前的交易系統(tǒng)中,都是和撮合引擎綁定在一起的尝抖,采用的是<單邊凈額清算>方式毡们;
- 【應(yīng)對策略】:
- 進(jìn)行<多邊凈額清算>的設(shè)計、實施昧辽、驗證衙熔;
5. 結(jié)束語
在接下來的文章中,我們將逐步介紹交易系統(tǒng)的【賬戶體系】【撮合引擎】【清算系統(tǒng)】的設(shè)計實現(xiàn)搅荞。