99久久人妻无码精品系列蜜桃|欧美一区二区三区乱码AⅤ|精品国语对白精品自拍视|在线视频免费观看一区|98av国产欧美日韩亚洲欧洲|人妻丰满熟妇av无码区二区三区|强乱中文字幕av一区乱码|亚洲日本一区二区

您的位置:首頁(yè) > 要聞 >

實(shí)戰(zhàn) | 淺談分布式系統(tǒng)的性能調(diào)優(yōu)

2023-08-22 14:49:04 來(lái)源:金融電子化

文 / 光大銀行金融科技部 張智峰 鄭皓廣 謝書華

為滿足業(yè)務(wù)系統(tǒng)日益增長(zhǎng)的可靠性與性能需求,銀行IT系統(tǒng)正朝著分布式架構(gòu)轉(zhuǎn)型。在轉(zhuǎn)型過(guò)程中,我們面臨著分布式系統(tǒng)云化部署、自主研發(fā)軟硬件適配等諸多挑戰(zhàn)。本文以光大銀行一次大型業(yè)務(wù)系統(tǒng)性能調(diào)優(yōu)為例,分享分布式系統(tǒng)調(diào)優(yōu)過(guò)程中的一些實(shí)踐經(jīng)驗(yàn)。


(資料圖片僅供參考)

環(huán)境介紹

該系統(tǒng)除進(jìn)行分布式架構(gòu)改造外,還同步實(shí)現(xiàn)了自主研發(fā)軟硬件適配和云化部署,具體架構(gòu)和使用的技術(shù)產(chǎn)品如下所示。

1.基礎(chǔ)設(shè)施層部署模型介紹

該系統(tǒng)在光大銀行最新一代云計(jì)算平臺(tái)——全棧云部署,從底層硬件到操作系統(tǒng)、中間件及數(shù)據(jù)庫(kù)均選擇自主研發(fā)軟硬件解決方案。平臺(tái)主要分為:分布式云原生應(yīng)用、分布式數(shù)據(jù)庫(kù)和緩存數(shù)據(jù)庫(kù)三部分。其中云原生應(yīng)用和緩存數(shù)據(jù)庫(kù)分別以容器和虛擬機(jī)的形式部署,分布式數(shù)據(jù)庫(kù)則部署在裸金屬服務(wù)器上并搭配了NVMe本地存儲(chǔ),操作系統(tǒng)全部使用自主研發(fā)Linux系統(tǒng)。

圖1 某大型分布式業(yè)務(wù)系統(tǒng)架構(gòu)圖

2.業(yè)務(wù)模型

為了驗(yàn)證分布式架構(gòu)對(duì)高并發(fā)場(chǎng)景下的支撐能力,本次調(diào)優(yōu)特意選取了對(duì)高并發(fā)要求較高的聯(lián)機(jī)交易類系統(tǒng)。

如圖2所示,GW(網(wǎng)關(guān))服務(wù)、DP(存款)服務(wù)、IA(內(nèi)部賬)服務(wù)、UNISN(全局序列號(hào))服務(wù)、SEATA開(kāi)源分布式事務(wù)等均采用微服務(wù)架構(gòu)運(yùn)行在容器集群中。微服務(wù)會(huì)持續(xù)對(duì)服務(wù)注冊(cè)中心進(jìn)行心跳檢測(cè),同時(shí)定期獲取微服務(wù)清單和配置信息,以實(shí)現(xiàn)配置更新及服務(wù)發(fā)現(xiàn)。

業(yè)務(wù)請(qǐng)求經(jīng)GW服務(wù)調(diào)用DP服務(wù)接口識(shí)別業(yè)務(wù)類型,并根據(jù)業(yè)務(wù)邏輯在各微服務(wù)和數(shù)據(jù)庫(kù)間流轉(zhuǎn)。該系統(tǒng)需要在內(nèi)部高頻遠(yuǎn)程過(guò)程調(diào)用的情況下,保證聯(lián)機(jī)交易低時(shí)延高并發(fā)的需求。

圖2 某大型分布式業(yè)務(wù)系統(tǒng)業(yè)務(wù)模型圖

對(duì)比傳統(tǒng)架構(gòu),我們不難發(fā)現(xiàn)系統(tǒng)在進(jìn)行微服務(wù)改造后整體架構(gòu)較為復(fù)雜,各微服務(wù)間存在大量遠(yuǎn)程過(guò)程調(diào)用,導(dǎo)致了更多的網(wǎng)絡(luò)交互開(kāi)銷,而這部分時(shí)間開(kāi)銷在云計(jì)算SDN網(wǎng)絡(luò)下被進(jìn)一步放大。

通用調(diào)優(yōu)

整體調(diào)優(yōu)工作分為兩個(gè)階段。第一階段旨在梳理業(yè)務(wù)模型,確立調(diào)優(yōu)思路,并分別對(duì)云網(wǎng)、數(shù)據(jù)庫(kù)及系統(tǒng)環(huán)境進(jìn)行普適性調(diào)優(yōu)。我行各技術(shù)領(lǐng)域?qū)<揖鶇⑴c到調(diào)優(yōu)過(guò)程中,通過(guò)網(wǎng)絡(luò)模型優(yōu)化、數(shù)據(jù)庫(kù)對(duì)象及環(huán)境優(yōu)化等手段,使基礎(chǔ)組件及設(shè)施更適合分布式架構(gòu),充分發(fā)揮分布式架構(gòu)的優(yōu)勢(shì)。

1.云網(wǎng)篇

全棧云使用基礎(chǔ)網(wǎng)絡(luò)架構(gòu)(三層SDN網(wǎng)絡(luò)模型),節(jié)點(diǎn)間多采用Vxlan通信,負(fù)責(zé)Vxlan隧道解封裝的隧道端點(diǎn)VTEP,廣泛分布在算力資源、SDN網(wǎng)元、裸金屬網(wǎng)關(guān)等節(jié)點(diǎn),導(dǎo)致各節(jié)點(diǎn)間互訪的流量路徑較為復(fù)雜??紤]到分布式架構(gòu)下的高頻遠(yuǎn)程過(guò)程調(diào)用使網(wǎng)絡(luò)開(kāi)銷較大,為追求最佳性能,需要針對(duì)分布式架構(gòu)單獨(dú)設(shè)計(jì)網(wǎng)絡(luò)部署模型。我們將虛擬機(jī)及容器全部部署到相同VPC下的同一子網(wǎng)內(nèi),使虛擬機(jī)與容器的網(wǎng)絡(luò)通信收束在Leaf交換機(jī)以下,規(guī)避了SDN層的頻繁轉(zhuǎn)發(fā)。在網(wǎng)絡(luò)部署模型優(yōu)化后,網(wǎng)絡(luò)的整體性能有了大幅提升,通過(guò)最直觀的ping測(cè)試數(shù)據(jù),平均時(shí)延被控制在250微秒以內(nèi),較優(yōu)化前350微秒的平均時(shí)延有了近30%的提升,整體性能提升了20%以上。

圖3 全棧云網(wǎng)絡(luò)物理部署圖

2.數(shù)據(jù)庫(kù)篇

從傳統(tǒng)集中式數(shù)據(jù)庫(kù)遷移至分布式數(shù)據(jù)庫(kù)面臨很大的困難挑戰(zhàn),需要充分發(fā)揮分布式數(shù)據(jù)庫(kù)海量數(shù)據(jù)、高并發(fā)的性能優(yōu)勢(shì),同時(shí)也要避免架構(gòu)由集中式轉(zhuǎn)變?yōu)榉植际綆?lái)的缺點(diǎn)與不足,為此我們進(jìn)行了如下的優(yōu)化措施。

■ 減少自增列使用:典型的存算分離架構(gòu)的分布式數(shù)據(jù)庫(kù)為了保證帶有自增列值在全分片內(nèi)保持唯一且遞增,需要一個(gè)統(tǒng)一服務(wù)來(lái)生成這種遞增序號(hào),即GTM組件。分布式數(shù)據(jù)庫(kù)自增列的寫入效率并不及集中式數(shù)據(jù)庫(kù),在高并發(fā)寫入場(chǎng)景下會(huì)成為性能瓶頸。因此我們?nèi)サ袅巳肿栽鰧傩?,?guī)避了生成全局遞增序號(hào)導(dǎo)致的性能瓶頸。

■ 批量?jī)?yōu)化:為充分發(fā)揮分布式數(shù)據(jù)庫(kù)高并發(fā)的性能優(yōu)勢(shì),我們對(duì)業(yè)務(wù)表以賬號(hào)進(jìn)行了哈希水平分片,并在每個(gè)分片也以賬號(hào)做了哈希分區(qū)。應(yīng)用程序可以利用多線程以及數(shù)據(jù)庫(kù)STORAGEDB語(yǔ)法特性將SQL透?jìng)髦翆?duì)應(yīng)分片,通過(guò)多分片多分區(qū)并行執(zhí)行的方式極大縮短了結(jié)息批量的執(zhí)行時(shí)間。隨著后續(xù)建設(shè)中分片數(shù)量增加,批量執(zhí)行時(shí)間也會(huì)隨著并行度增加而進(jìn)一步縮短,甚至能夠超過(guò)傳統(tǒng)架構(gòu)使用的集中式數(shù)據(jù)庫(kù)。

同時(shí),我們參考同業(yè)實(shí)踐經(jīng)驗(yàn)以及我行實(shí)際情況對(duì)數(shù)據(jù)庫(kù)服務(wù)器內(nèi)存管理、磁盤數(shù)據(jù)管理策略做了調(diào)整。

■ 定時(shí)清理buff/cache:數(shù)據(jù)庫(kù)面對(duì)高并發(fā)讀寫場(chǎng)景時(shí),服務(wù)器buff/cache的高占用容易成為性能瓶頸。我們引入定時(shí)清理策略進(jìn)行,以減少因服務(wù)器緩存釋放不及時(shí)造成TPS和時(shí)延的不穩(wěn)定。

■ 條帶化:分布式數(shù)據(jù)庫(kù)DN節(jié)點(diǎn)屬于I/O密集型服務(wù),盡量降低NVMe本地盤的讀寫延遲是需要考慮的方向。通過(guò)條帶化配置,數(shù)據(jù)讀取和寫入可以獲得最大程度的I/O并行能力,從而降低SQL語(yǔ)句執(zhí)行以及事務(wù)提交的時(shí)間開(kāi)銷。

針對(duì)性能瓶頸的專項(xiàng)調(diào)優(yōu)

在普適性調(diào)優(yōu)之后,系統(tǒng)的整體性能有了顯著提升,但離預(yù)期仍有一定距離。我們發(fā)現(xiàn)各個(gè)計(jì)算節(jié)點(diǎn)的CPU、內(nèi)存使用率等指標(biāo)均處于較低的水平,這說(shuō)明性能瓶頸仍然存在,因此我們將目標(biāo)轉(zhuǎn)向提升各組件在壓力測(cè)試下的資源利用率,并利用云上overlay流量觀測(cè),underlay網(wǎng)絡(luò)探針和應(yīng)用日志埋點(diǎn)等手段分析隱藏的性能瓶頸點(diǎn),利用工具精準(zhǔn)錨定瓶頸點(diǎn),提升“短板性能”。

分段時(shí)延獲取、

瓶頸點(diǎn)定位與針對(duì)性調(diào)優(yōu)

圖4 單交易分段時(shí)延獲取與分析

鏈路監(jiān)測(cè)通過(guò)捕獲應(yīng)用服務(wù)和數(shù)據(jù)庫(kù)的日志關(guān)鍵字的方式獲取鏈路分段時(shí)延。雖然日志輸出會(huì)犧牲系統(tǒng)性能,但能夠有效幫助我們分析各環(huán)節(jié)調(diào)用次數(shù)與時(shí)延并找到隱藏的性能瓶頸。

分析發(fā)現(xiàn),單筆交易的時(shí)間開(kāi)銷主要來(lái)自于應(yīng)用內(nèi)部的數(shù)據(jù)處理、數(shù)據(jù)庫(kù)的事務(wù)處理和微服務(wù)間RPC。為此,我們進(jìn)行了針對(duì)性調(diào)優(yōu)。

1.在業(yè)務(wù)層,主要進(jìn)行了緩存優(yōu)化、批量?jī)?yōu)化和通訊優(yōu)化

緩存優(yōu)化:

(1)對(duì)于需要高頻訪問(wèn)且日常改動(dòng)較少的參數(shù)類庫(kù)表,考慮通過(guò)采用緩存數(shù)據(jù)來(lái)優(yōu)化訪問(wèn)效率。

(2)一般情況,應(yīng)用在每次調(diào)用數(shù)據(jù)庫(kù)前會(huì)對(duì)SQL進(jìn)行預(yù)編譯,對(duì)于SQL比較多的場(chǎng)景,預(yù)編譯的時(shí)間將被放大,通過(guò)對(duì)SQL預(yù)編譯的結(jié)果進(jìn)行緩存,可以減少耗費(fèi)在SQL預(yù)編譯上的時(shí)間。

(3)對(duì)注冊(cè)中心可用性進(jìn)行了優(yōu)化,通過(guò)本地服務(wù)列表內(nèi)存緩存、本地服務(wù)列表文件緩存的多級(jí)緩存策略,在注冊(cè)中心整體宕機(jī)時(shí)盡量減少了對(duì)業(yè)務(wù)系統(tǒng)的影響。

批量?jī)?yōu)化:充分發(fā)揮分布式架構(gòu)的優(yōu)勢(shì),在資源允許的范圍內(nèi)進(jìn)一步提高任務(wù)處理的并發(fā)度,將批量任務(wù)化整為零,通過(guò)合理的任務(wù)分片全面提升批處理效率。同時(shí)盡量避免大事務(wù)的產(chǎn)生,通過(guò)減小單個(gè)事務(wù)的規(guī)模,有效規(guī)避業(yè)務(wù)處理的潛在鎖沖突。

底層通訊優(yōu)化:在內(nèi)部服務(wù)高頻交互的場(chǎng)景下,將服務(wù)間的通訊協(xié)議由http協(xié)議改成了基于socket長(zhǎng)連接的bolt協(xié)議,減少了通訊的損耗。

2.在數(shù)據(jù)庫(kù)方向,主要從事務(wù)和裸金屬網(wǎng)絡(luò)兩個(gè)方面進(jìn)行了優(yōu)化

事務(wù)優(yōu)化:在確保相關(guān)的表和數(shù)據(jù)行不會(huì)涉及分布式事務(wù)并發(fā)讀寫的情況下,我們針對(duì)性地通過(guò)hint的方式降低了部分事務(wù)會(huì)話級(jí)的隔離級(jí)別,減少了不必要的查詢活躍事務(wù)列表、select for update時(shí)間開(kāi)銷。

裸金屬網(wǎng)絡(luò)優(yōu)化:由于分布式數(shù)據(jù)庫(kù)涉及多節(jié)點(diǎn)間的通信協(xié)調(diào),在網(wǎng)絡(luò)鏈路上的開(kāi)銷遠(yuǎn)高于集中式數(shù)據(jù)庫(kù),為此我行全棧云專家也針對(duì)分布式數(shù)據(jù)庫(kù)內(nèi)部網(wǎng)絡(luò)進(jìn)行了專項(xiàng)調(diào)優(yōu)。

圖5 裸金屬網(wǎng)絡(luò)調(diào)優(yōu)前ping測(cè)試數(shù)據(jù)

我們?yōu)槊恳慌_(tái)裸金屬節(jié)點(diǎn)新增了一個(gè)私網(wǎng)地址,專門用于裸金屬節(jié)點(diǎn)之間的互通,并對(duì)數(shù)據(jù)庫(kù)內(nèi)部網(wǎng)絡(luò)的流量模型和通信矩陣進(jìn)行調(diào)整,使得裸金屬內(nèi)部通信可以通過(guò)Leaf交換機(jī)直接轉(zhuǎn)發(fā)的方式實(shí)現(xiàn)路徑最簡(jiǎn)的高速網(wǎng)絡(luò),平均ping延時(shí)由130us下降到了80us,性能大幅提升。

圖6 裸金屬網(wǎng)絡(luò)調(diào)優(yōu)后ping測(cè)試數(shù)據(jù)

overlay層數(shù)據(jù)包分析

云上環(huán)境很難利用傳統(tǒng)的underlay探針預(yù)埋手段獲取全量網(wǎng)絡(luò)流量信息,在此我們利用網(wǎng)絡(luò)可視化工具,在云化資源上部署agent觀察overlay層網(wǎng)絡(luò)。

通過(guò)云網(wǎng)可視化工具進(jìn)行網(wǎng)絡(luò)抓包,我們發(fā)現(xiàn)通信包內(nèi)多次出現(xiàn)了重傳和零窗現(xiàn)象,如圖7所示。

圖7 利用云網(wǎng)可視化工具定位網(wǎng)絡(luò)問(wèn)題

考慮到自主研發(fā)ARM服務(wù)器與我們熟知的IntelX86服務(wù)器除指令集外,其多核架構(gòu)也是一大不同點(diǎn),沿用X86相關(guān)參數(shù)配置服務(wù)器的方式需要進(jìn)行調(diào)整。

經(jīng)過(guò)業(yè)務(wù)分析發(fā)現(xiàn),其中零窗和重傳集中于BMS007->BMS011與BMS008->BMS011兩條裸金屬服務(wù)器通信線路中,因此懷疑此部分網(wǎng)絡(luò)鏈路存在性能瓶頸。在升級(jí)業(yè)務(wù)邏輯并針對(duì)服務(wù)器進(jìn)行了網(wǎng)卡緩沖區(qū)擴(kuò)展、關(guān)閉網(wǎng)卡中斷聚合、調(diào)整網(wǎng)卡中斷隊(duì)列與綁核后,重傳及零窗現(xiàn)象有了大幅優(yōu)化,重傳率降低至0.1%以下。

在第二階段的調(diào)優(yōu)中,聯(lián)合調(diào)優(yōu)小組通過(guò)多個(gè)云上系統(tǒng)觀測(cè)工具進(jìn)行了瓶頸點(diǎn)分析并實(shí)施了多個(gè)針對(duì)性調(diào)優(yōu),使得整體系統(tǒng)性能較調(diào)優(yōu)前有了80%以上提升,但是距離項(xiàng)目整體預(yù)期的性能仍有部分差距。在調(diào)優(yōu)實(shí)施中,有所收獲的同時(shí),我們也深刻意識(shí)到了不足。面對(duì)“分布式+云化+自主研發(fā)適配”這種復(fù)合架構(gòu)改造場(chǎng)景,我們還存在諸如云上工具建設(shè)不足、微服務(wù)改造不徹底、自主研發(fā)軟硬件適配仍處于探索階段等問(wèn)題。

回顧與總結(jié)

自主研發(fā)軟硬件適配正處于經(jīng)驗(yàn)積累階段,在實(shí)際使用方面距離“開(kāi)箱即用”還有一定距離。追求高穩(wěn)定性和極致性能的重要應(yīng)用系統(tǒng)在建設(shè)過(guò)程中都需要完成相對(duì)復(fù)雜的性能調(diào)優(yōu)適配工作,以找到每個(gè)系統(tǒng)需要的“最優(yōu)解”。后續(xù)光大銀行也將加強(qiáng)與相關(guān)廠商的合作,針對(duì)性滿足應(yīng)用系統(tǒng)“經(jīng)濟(jì)型”“均衡型”“穩(wěn)定性”和“性能型”等不同方向的需求,形成運(yùn)維資源交付與應(yīng)用程序結(jié)合的最佳實(shí)踐。

在當(dāng)前技術(shù)趨勢(shì)下,應(yīng)用系統(tǒng)建設(shè)同時(shí)面臨基礎(chǔ)設(shè)施云化、架構(gòu)分布式改造、系統(tǒng)軟件自主可控適配、應(yīng)用容器化等一系列挑戰(zhàn),這都給系統(tǒng)性能的調(diào)優(yōu)造成了一系列不確定變量,將原本相對(duì)體系規(guī)范的性能調(diào)優(yōu)工作難度成倍增加。由于涉及從基礎(chǔ)設(shè)施到應(yīng)用程序的多層面配合協(xié)調(diào),這就需要基礎(chǔ)設(shè)施建設(shè)人員、云平臺(tái)建設(shè)者、系統(tǒng)軟硬件工程師、應(yīng)用程序開(kāi)發(fā)者“多向奔赴”,合作共贏,共同實(shí)現(xiàn)系統(tǒng)性能的極致化。

面對(duì)復(fù)雜的工作任務(wù),多層面的人員協(xié)調(diào),更需要體系化、系統(tǒng)化的工作方法進(jìn)行情況分析、目標(biāo)設(shè)定、人員協(xié)調(diào)和任務(wù)統(tǒng)籌。在本次性能調(diào)優(yōu)過(guò)程中,無(wú)論是分段獲取數(shù)據(jù)的標(biāo)準(zhǔn)測(cè)試方法論,還是引入的應(yīng)用日志、網(wǎng)絡(luò)流量和智能運(yùn)維等工具完成性能情況的獲取都值得在后續(xù)工作中積累推廣。光大銀行也將積極推進(jìn)相關(guān)工作方法、工具以及流程的積累,盡快形成一套標(biāo)準(zhǔn)高效的性能調(diào)優(yōu)方法論,進(jìn)一步提升敏捷交付的效率。

關(guān)鍵詞:

[責(zé)任編輯:xwzkw]

相關(guān)閱讀

title="99久久人妻无码精品系列蜜桃|欧美一区二区三区乱码AⅤ|精品国语对白精品自拍视|在线视频免费观看一区|98av国产欧美日韩亚洲欧洲|人妻丰满熟妇av无码区二区三区|强乱中文字幕av一区乱码|亚洲日本一区二区|国产suv一区二区|欧美精品电影一区二区三区|免费无码毛片一区二区app|粉嫩的18在线观看极品精品">