如今,轉賬場景深入在我們生活的方方面面,也有很多技術團隊在獨立開發轉賬的小程式。
本文將給大家對比常見的小程式和分散式小程式的優劣,最後藉助 SOFAStack 的能力,提供 25 分鐘實現穩定的分散式架構的轉賬小程式的 Demo。
背景
2017 年 12 月 ,螞蟻金服釋出自主研發的分散式中介軟體(Scalable Open Financial Architecture,以下簡稱 SOFA ),並提出金融機構進行業務突破和創新的關鍵是:行業 IT 架構從傳統的集中式架構向分散式架構轉型。
2018 年 4 月,螞蟻金服 SOFA 啟動開源計劃,並開放多個元件,這一系列的動作受到大家的關註和支援,同時,SOFA 社群也日益壯大,除了積極參加開源社群的分享之外,目前已經在杭州、北京、深圳的 Meetup 與大家相見。
2018 年 9 月,杭州螞蟻金服 ATEC(Ant Technology Exploration Conference),SOFA 再次與開發者們相約,聯合支付寶小程式推出《 25 分鐘開發分散式架構的轉賬小程式》的體驗課程,大家可在杭州雲棲小鎮國際會展中心場館 B 場館- ATEC 開發者樂園 CodeLab 來現場動手實踐,時間為 2018/9/19 – 9/22。
場景介紹
一個精簡的轉賬業務,一般會包含幾個部分:
-
使用者發起轉賬
-
系統記錄使用者的支出記錄
-
將資金從 A 使用者轉 B 使用者
-
傳回給使用者“操作成功”提醒,並且定期會給使用者傳送一些日結或者月結的收支賬單
這裡涉及到賬戶、轉賬、賬單三個功能模組。
小程式集中式後臺架構
常見的集中式架構如下圖所示,轉賬涉及的賬戶、轉賬、賬單等功能模組都集中在一個後臺系統中,所有的資料都在同一個資料庫裡面。在業務量不大的情況下,集中式後臺系統設計簡單,部署方便,沒有太多複雜的場景。
但是在大業務量的情況下,集中式架構的缺點也一一體現,例如成本較高、系統容量有限、擴充套件能力受限、程式碼繁重、故障影響面大等等。
小程式分散式後臺架構
在上圖中,可以看到原來集中式的系統已經拆分為多個後臺系統,原來的集中式資料庫也已經拆分為兩個資料庫,原來行程內的系統互動也變成了行程間的系統互動。
分散式後臺架構很好的解決了集中式架構的問題的同時,但是也帶來了一些新的挑戰。
例如:
-
系統間的同步呼叫、非同步呼叫
-
分散式資料源的資料庫訪問
-
分散式事務
我們來舉個例子,假設轉賬業務的前端是小程式,其完整的流程圖如下:
-
使用者掃描二維碼進行登入,成功後可以檢視當前的餘額
-
選取另一個使用者進行轉賬,輸入金額並提交,同時會做限額的校驗
-
轉賬應用記錄流水明細
-
轉賬應用呼叫賬號應用,進行兩個賬號餘額增減
-
轉賬應用傳送成功訊息給使用者
採用以上的方案,可能會面對一些問題,比如:
-
如何保證轉賬應用跟賬號應用之間的事務一致性?
-
轉賬的明細庫容量不夠瞭如何動態水平擴容?
-
資料如何由單庫遷移到多庫?如何保證訊息傳送的可靠性?等等
這時候,需要一套成熟的中介軟體來為使用者解決分散式架構下的問題。業內有不少不錯的中介軟體產品,比如開源的 Spring Cloud 、SOFAStack 框架等。
今天,我們現場體驗一下「基於 SOFAStack 中介軟體的轉賬小程式」的特別之處
螞蟻金融科技的 SOFAStack 中介軟體從螞蟻內部演變發展而來,經歷了數 10 年金融級業務的發展。
SOFAStack 可以幫忙使用者快速構建健壯的系統:
-
分散式事務 DTX 可以解決轉賬鏈路上 payment 跟 account 之間跨資源的分散式事務問題,業務程式碼幾乎不用調整;
-
資料訪問代理 DBP 可以解決 payment 資料庫容量的問題,使用者像使用單庫單表一樣訪問分庫分表的資料訪問代理 DBP 實體,並且可以跟分散式事務 DTX 整合使用;
-
任務排程及訊息佇列可以解決賬單系統(Bill)複雜的賬單任務以及傳送可靠的賬單訊息、支付成功訊息給使用者。
圖中提到的 SOFAStack 產品如下,結合這些產品的能力,我們便能很好地解決普通的分散式小程式帶來的問題:
-
SOFABoot:基於 Spring Boot 的一套研發框架;
-
微服務
-
SOFARPC:一個高可擴充套件性、高效能、生產級的 Java RPC 框架;
-
動態配置:動態配置是一個配置管理框架。它可以在分散式環境下、執行期動態管理應用叢集配置引數,廣泛用於業務引數配置、應急開關切換等場景;
-
定時任務:定時任務服務旨在為業務系統提供統一通用的任務排程服務,提供定時任務的管理監控平臺,減輕業務系統開發和後續線上運維的工作量;
訊息佇列:具備高可靠、高吞吐量、高可用、事務強一致性、可穩定支撐億級資料洪峰的金融級訊息中介軟體;
資料訪問代理 DBP:專註於為金融級資料訪問提供高效能、高可用、可擴充套件的輕量級解決方案;
分散式事務 DTX(FMT樣式):在大規模分散式環境下,以優異的效能保障業務資料的一致性,支撐數億級使用者的資金操作。 廣泛應用於交易、轉賬、保險理財等核心資金鏈路;
開始動手吧:
2018/9/19 – 9/22,螞蟻金服將在杭州雲棲大會暨螞蟻 ATEC 科技大會期間打造螞蟻開發者樂園,其中包含螞蟻金融科技雲+端一站式體驗以及支付寶小程式挑戰賽兩大環節,SOFA 團隊將在這裡與你相約,我們更是準備了精美的禮品等待大家 ^_^
舉辦地點:杭州雲棲小鎮國際會展中心場館 B 場館 – ATEC 開發者樂園 CodeLab 區域
Demo 實現如下:
延伸閱讀:
深度 | 為你解讀 SOFA-DTX 分散式事務的設計演進路線上篇
深度 | 為你解讀 SOFA-DTX 分散式事務的設計演進路線下篇
相關論壇推薦:數字金融架構轉型專場
時間:9月21日下午13:30-16:30
在這場論壇上,我們即將習得如何打造安全、穩定、高效、敏捷的基礎架構能力,打造下一代金融核心系統所涉及的關鍵技術和架構,相關話題包括高可用架構、資損防控、智慧運維、容器雲、分散式核心等。
長按關註,獲取分散式架構乾貨
歡迎大家共同打造 SOFAStack https://github.com/alipay