概述
近年來互聯(lián)網(wǎng)金融蓬勃發(fā)展奸披,在借貸昏名、保險(xiǎn)、股權(quán)等領(lǐng)域涌現(xiàn)出一大批互聯(lián)網(wǎng)與金融場(chǎng)景相結(jié)合的創(chuàng)新產(chǎn)品阵面,如花唄轻局、借唄洪鸭,微粒貸等眾多服務(wù)。
為滿足日益劇增的用戶增長(zhǎng)和交易量仑扑,往往需要在架構(gòu)設(shè)計(jì)時(shí)览爵,考慮高性能的特性。
互聯(lián)網(wǎng)金融高性能設(shè)計(jì)
在互聯(lián)網(wǎng)金融分布式架構(gòu)中镇饮,高性能是一項(xiàng)涉及眾多方面因素的系統(tǒng)工程蜓竹,并不是單一高新技術(shù)和設(shè)備的簡(jiǎn)單應(yīng)用或堆疊,應(yīng)該進(jìn)行合理的規(guī)劃與優(yōu)化設(shè)計(jì)储藐,以適合用戶在性能俱济、成本等方面對(duì)系統(tǒng)建設(shè)的綜合需求。
1钙勃、高性能的指標(biāo)
高性能的指標(biāo)通常有:
通過合理的架構(gòu)設(shè)計(jì)蛛碌,實(shí)現(xiàn)互聯(lián)網(wǎng)金融系統(tǒng)高吞吐、低延時(shí)(相對(duì)時(shí)間)辖源。
可用性指標(biāo)計(jì)算:平均相應(yīng)時(shí)間左医、95線的響應(yīng)時(shí)間、99線的響應(yīng)時(shí)間同木。
提升系統(tǒng)的性能
互聯(lián)網(wǎng)金融系統(tǒng)浮梢,涉及到各方面的性能問題,如:
- 系統(tǒng)軟件平臺(tái)服務(wù)的性能
- 網(wǎng)絡(luò)和硬件的性能
- 數(shù)據(jù)庫(kù)及存儲(chǔ)的性能等
1彤路、微服務(wù)化設(shè)計(jì)
將對(duì)龐大金融服務(wù)進(jìn)行領(lǐng)域規(guī)劃秕硝,將臃腫的系統(tǒng)進(jìn)行拆分解耦,將每一個(gè)模塊進(jìn)行解耦洲尊,把每個(gè)服務(wù)都盡可能做成無(wú)狀態(tài)化远豺,每個(gè)獨(dú)立模塊均可以作為一個(gè)微服務(wù),這樣每個(gè)微服務(wù)的關(guān)聯(lián)性都比較小坞嘀,每一個(gè)微服務(wù)都可能做到最大化的性能躯护。
2、CDN加速技術(shù)
互聯(lián)網(wǎng)消費(fèi)金融的產(chǎn)品丽涩,涉及到眾多前端棺滞,使用CDN緩存技術(shù),能大大提升用戶的產(chǎn)品體驗(yàn)矢渊。
CND加速將網(wǎng)站的內(nèi)容緩存在網(wǎng)絡(luò)邊緣(離用戶接入網(wǎng)絡(luò)最近的地方)继准,然后在用戶訪問網(wǎng)站內(nèi)容的時(shí)候,通過調(diào)度系統(tǒng)將用戶的請(qǐng)求路由或者引導(dǎo)到離用戶接入網(wǎng)絡(luò)最近或者訪問效果最佳的緩存服務(wù)器上矮男,由該緩存服務(wù)器為用戶提供內(nèi)容服務(wù)移必;相對(duì)于直接訪問源站,這種方式縮短了用戶和內(nèi)容之間的網(wǎng)絡(luò)距離毡鉴,從而達(dá)到加速的效果崔泵。
3秒赤、網(wǎng)絡(luò)與硬件性能
帶寬性能:足夠的帶寬應(yīng)該滿足在網(wǎng)站峰值的情況還能足夠快速的使用,所以網(wǎng)絡(luò)帶寬應(yīng)該大于峰值流量憎瘸,只有在保證帶寬的情況才能實(shí)現(xiàn)高性能服務(wù)倒脓。
- 網(wǎng)絡(luò)帶寬 = max(峰值QPS ,平均請(qǐng)求大泻肌)
服務(wù)器性能:服務(wù)器性能主要從CPU崎弃、內(nèi)存和磁盤三個(gè)方面來考慮
- CPU核心數(shù)量盡量多點(diǎn)
- 內(nèi)存大小最好大一點(diǎn)
- 利用到磁盤存儲(chǔ)的話SSD會(huì)優(yōu)于機(jī)械磁盤
硬件負(fù)載均衡設(shè)備對(duì)于有條件的團(tuán)隊(duì)可以采購(gòu)硬件負(fù)載均衡設(shè)備,加強(qiáng)后臺(tái)服務(wù)負(fù)載均衡的能力含潘,比如F5饲做。
4、分布式緩存
在互聯(lián)網(wǎng)金融的高并發(fā)場(chǎng)景遏弱,引入緩存能夠大大提升系統(tǒng)性能盆均,減少數(shù)據(jù)庫(kù)IO請(qǐng)求,從而降低核心數(shù)據(jù)庫(kù)的并發(fā)壓力漱逸。
緩存的本質(zhì)是通過Key-Value形式的Hash表提升讀寫速度泪姨,一般情況是O(1)的讀寫速度。讀量比較高饰抒,變化量不大的數(shù)據(jù)比較適合使用緩存肮砾。目前比較常用的分布式緩存技術(shù)有Redis,Memcache等袋坑。緩存這塊的中間件建設(shè)仗处,后面的章節(jié)會(huì)在細(xì)化講解。
5枣宫、操作異步化設(shè)計(jì)
目前在大型的互聯(lián)網(wǎng)消費(fèi)金融系統(tǒng)架構(gòu)設(shè)計(jì)中婆誓,普遍會(huì)考慮用消息隊(duì)列來講調(diào)用異步化,不僅可以提升系統(tǒng)的性能也颤,還可以提升系統(tǒng)的擴(kuò)展性洋幻。
對(duì)于大量的數(shù)據(jù)庫(kù)寫請(qǐng)求,數(shù)據(jù)庫(kù)的壓力很大翅娶,同時(shí)也會(huì)造成數(shù)據(jù)庫(kù)的響應(yīng)不及時(shí)文留。可以引入使用消息隊(duì)列機(jī)制故觅,數(shù)據(jù)庫(kù)的寫請(qǐng)求可以直接寫入到消息隊(duì)列厂庇,然后通過多線程或者多進(jìn)程從消息隊(duì)列讀取數(shù)據(jù)慢慢寫入到數(shù)據(jù)庫(kù)。消息隊(duì)列服務(wù)器的處理速度會(huì)遠(yuǎn)遠(yuǎn)快于數(shù)據(jù)庫(kù)输吏,所以用戶在寫入操作時(shí)會(huì)感覺到很快寫入速度。
6替蛉、代碼的優(yōu)化
對(duì)于IO操作的請(qǐng)求可以采用基于狀態(tài)機(jī)的異步化編程贯溅。
處理算法的模型優(yōu)化(時(shí)間復(fù)雜度和空間復(fù)雜度)拄氯,對(duì)于數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)可以采用高效的數(shù)據(jù)結(jié)構(gòu),比如典型的key-value緩存系統(tǒng)就是基于hash的基本原理來實(shí)現(xiàn)的它浅,hash表的查詢效率是O(1)译柏,效率極快。
7姐霍、高性能的本地存儲(chǔ)設(shè)計(jì)
提供更高的存儲(chǔ)硬件鄙麦,更高的吞吐量和IPOS,讀寫性能镊折。合理的數(shù)據(jù)連接池和緩存胯府。
8、數(shù)據(jù)分片設(shè)計(jì)
在互聯(lián)網(wǎng)消費(fèi)金融領(lǐng)域恨胚,涉及到很多賬務(wù)數(shù)據(jù)的處理骂因,引入分片技術(shù)能大大提升數(shù)據(jù)處理的性能。
比如:借貸業(yè)務(wù)涉及到的借據(jù)數(shù)據(jù)赃泡、財(cái)務(wù)數(shù)據(jù)的夜間批量處理時(shí)寒波,利用分片技術(shù)進(jìn)行處理,提供了更高的擴(kuò)展性升熊,提升了整體的性能俄烁。