《胡宇-rust分布式賬務系統.pptx》由會員分享,可在線閱讀,更多相關《胡宇-rust分布式賬務系統.pptx(27頁珍藏版)》請在三個皮匠報告上搜索。
1、第三屆中國第三屆中國Rust開發者大會開發者大會Rust構建分布式賬務系統在Fintech公司落地Rust項目的經驗分享Airwallex胡宇Airwallex我們是一家跨境支付領域的Fintech獨角獸關于我們E2輪Fintech獨角獸,業務遍布全球關于我們:Airwallex墨爾本墨爾本新加坡新加坡倫敦倫敦深圳深圳香港香港北京北京舊金山舊金山上海上海東京東京班加羅爾班加羅爾阿姆斯特丹阿姆斯特丹西安西安馬來西亞馬來西亞幣種50+國家130+辦公地點191300+員工提供高效,低成本的數字銀行服務關于我們:Airwallex從設計架構到實現細節項目介紹分布式賬務系統Fintech互聯網互聯網正
2、確性bug=資損bug不可怕,快速迭代可靠性丟數據=資損允許數據丟失性能超低延遲+高吞吐超高吞吐交易日志審計,監管調試使用分布式賬務系統Fintech 領域中的軟件與互聯網軟件的不同需求分析支付處理:轉賬凍資/解資賬戶限額批處理事務正確性:無雙花或少付審計監管:交易日志不可篡改,交易歷史可回溯條件事務:根據一定的條件決定事務執行與否高可用:在部分節點失效的情況下,依舊可以提供正確的服務超低延遲:實時交易,超低響應延遲水平擴展性:利用分布式事務實現錢包集群的的水平擴展,應對高達100萬TPS的流量可演化性:業務邏輯與底層API解耦,當業務發生改變時,底層API不用改變分布式賬務系統設計理念-Ru
3、st是我們可靠的基石分布式賬務系統存算分離API解耦讀寫分離層級賬號Rust事務層與賬戶層分離獨立水平擴展CQRSEvent Sourcing針對讀場景,寫場景分別優化穩定的底層API靈活的頂層API樹狀結構聚合查詢正確性:內存安全,線程安全可靠性:Raft共識算法 raft-rs 高性能:關鍵路徑無鎖單線程頂層架構Gateway 路由層業務API到底層API的翻譯產生轉賬計劃Marker 事務層使用業務id進行路由執行轉賬計劃分發賬戶變動請求Auticuro 賬戶層 使用賬戶id進行分區執行賬戶變動請求更新賬戶余額分布式賬務系統性能展示8 vCPUs*5 節點SSD 磁盤當 TPS=10K
4、時,延遲 P99 20ms分布式賬務系統高吞吐,超低延遲賬戶層:Auticuro分布式賬務系統賬戶層:Auticuro1.接受轉賬請求,轉換成eventsTokio+Tonic分布式賬務系統12341.接受轉賬請求,轉換成events2.將events送入Raft共識,等待events被多數節點保存共識:基于raft-rs的可靠消息隊列存儲:Rocksdb with Rust賬戶層:Auticuro分布式賬務系統12341.接受轉賬請求,轉換成events2.將events送入Raft共識,等待events被多數節點保存3.處理被共識的events,更新狀態機(賬戶表)去重&更新余額關鍵路徑采
5、用無鎖單線程賬戶層:Auticuro分布式賬務系統12341.接受轉賬請求,轉換成events2.將events送入Raft共識,等待events被多數節點保存3.處理被共識的events,更新狀態機(賬戶表)4.回調完成請求賬戶層:Auticuro分布式賬務系統1234事務層:Marker分布式賬務系統A,B,C在不同分區執行一個事務的TCC轉賬計劃轉賬計劃有向無環圖節點是一個任務邊是依賴關系事務層 Marker 負責執行計劃ACID 保證依賴控制條件執行調度賬戶變動請求跨分區轉賬分布式賬務系統擁抱開源github:https:/ 技術選型心路歷程對新技術持開放態度Kotlin:簡潔,JVM
6、,GCRust 引入 Linux 內核Android 支持 Rust積極探索新技術對金融科技的改變對于核心領域系統,追求極致性能,使用 RustAirwallex業界業界共識共識厲兵秣馬-人才培養 Rust 的吸引力更加容易吸引對技術有追求的人才Rust 學習曲線Java背景,C+背景的同事學習rust程序設計1-3 月可以熟練轉型使用RustRust 與原有技術棧的融合Kotlin:偏業務,適合快速迭代Rust:偏基礎架構,適合精心打磨gRPC:跨語言跨平臺通訊心路歷程真刀實槍 開發調試部署 IDE JetBrains+Rust 插件Gitlab CI/CD心路歷程真刀實槍 文檔工具 文檔生成 CI/CDgit page 作為文檔心路歷程吐槽點Nightly 版本編譯器:tikv,raft-rs無官方庫,官方庫支持不成熟Kafka(第三方:https:/ Cloud Platform(GCP),基于C語言的wrapper,容易編譯出錯心路歷程歡迎加入Airwallex 聯系郵箱:Thank you!