解碼 | 25 分鐘開發分散式架構的轉賬小程式

螞蟻金服分散式架構發表於2018-09-19

如今,轉賬場景深入在我們生活的方方面面,也有很多技術團隊在獨立開發轉賬的小程式。

本文將給大家對比常見的小程式和分散式小程式的優劣,最後藉助 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 使用者

  • 返回給使用者“操作成功”提醒,並且定期會給使用者傳送一些日結或者月結的收支賬單

這裡涉及到賬戶、轉賬、賬單三個功能模組。

小程式集中式後臺架構

常見的集中式架構如下圖所示,轉賬涉及的賬戶、轉賬、賬單等功能模組都集中在一個後臺系統中,所有的資料都在同一個資料庫裡面。在業務量不大的情況下,集中式後臺系統設計簡單,部署方便,沒有太多複雜的場景。

解碼 | 25 分鐘開發分散式架構的轉賬小程式

但是在大業務量的情況下,集中式架構的缺點也一一體現,例如成本較高、系統容量有限、擴充套件能力受限、程式碼繁重、故障影響面大等等。


小程式分散式後臺架構


解碼 | 25 分鐘開發分散式架構的轉賬小程式

在上圖中,可以看到原來集中式的系統已經拆分為多個後臺系統,原來的集中式資料庫也已經拆分為兩個資料庫,原來程式內的系統互動也變成了程式間的系統互動。

分散式後臺架構很好的解決了集中式架構的問題的同時,但是也帶來了一些新的挑戰。

例如:

  • 系統間的同步呼叫、非同步呼叫

  • 分散式資料來源的資料庫訪問

  • 分散式事務


我們來舉個例子,假設轉賬業務的前端是小程式,其完整的流程圖如下:

解碼 | 25 分鐘開發分散式架構的轉賬小程式

  • 使用者掃描二維碼進行登入,成功後可以檢視當前的餘額

  • 選取另一個使用者進行轉賬,輸入金額並提交,同時會做限額的校驗

  • 轉賬應用記錄流水明細

  • 轉賬應用呼叫賬號應用,進行兩個賬號餘額增減

  • 轉賬應用傳送成功訊息給使用者


採用以上的方案,可能會面對一些問題,比如:

  • 如何保證轉賬應用跟賬號應用之間的事務一致性?

  • 轉賬的明細庫容量不夠了如何動態水平擴容?

  • 資料如何由單庫遷移到多庫?如何保證訊息傳送的可靠性?等等


這時候,需要一套成熟的中介軟體來為使用者解決分散式架構下的問題。業內有不少不錯的中介軟體產品,比如開源的 Spring Cloud 、SOFAStack 框架等。

今天,我們現場體驗一下「基於 SOFAStack 中介軟體的轉賬小程式」的特別之處

螞蟻金融科技的 SOFAStack 中介軟體從螞蟻內部演變發展而來,經歷了數 10 年金融級業務的發展。


SOFAStack 可以幫忙使用者快速構建健壯的系統:

  • 分散式事務 DTX 可以解決轉賬鏈路上 payment 跟 account 之間跨資源的分散式事務問題,業務程式碼幾乎不用調整;

  • 資料訪問代理 DBP 可以解決 payment 資料庫容量的問題,使用者像使用單庫單表一樣訪問分庫分表的資料訪問代理 DBP 例項,並且可以跟分散式事務 DTX 整合使用;

  • 任務排程及訊息佇列可以解決賬單系統(Bill)複雜的賬單任務以及傳送可靠的賬單訊息、支付成功訊息給使用者。

解碼 | 25 分鐘開發分散式架構的轉賬小程式

圖中提到的 SOFAStack 產品如下,結合這些產品的能力,我們便能很好地解決普通的分散式小程式帶來的問題:

  1. SOFABoot:基於 Spring Boot 的一套研發框架;

  2. 微服務

  • SOFARPC:一個高可擴充套件性、高效能、生產級的 Java RPC 框架;

  • 動態配置:動態配置是一個配置管理框架。它可以在分散式環境下、執行期動態管理應用叢集配置引數,廣泛用於業務引數配置、應急開關切換等場景;

  • 定時任務:定時任務服務旨在為業務系統提供統一通用的任務排程服務,提供定時任務的管理監控平臺,減輕業務系統開發和後續線上運維的工作量;

  • 訊息佇列:具備高可靠、高吞吐量、高可用、事務強一致性、可穩定支撐億級資料洪峰的金融級訊息中介軟體;

  • 資料訪問代理 DBP:專注於為金融級資料訪問提供高效能、高可用、可擴充套件的輕量級解決方案;

  • 分散式事務 DTX(FMT模式):在大規模分散式環境下,以優異的效能保障業務資料的一致性,支撐數億級使用者的資金操作。 廣泛應用於交易、轉賬、保險理財等核心資金鍊路;

  • 開始動手吧:

    2018/9/19 - 9/22,螞蟻金服將在杭州雲棲大會暨螞蟻 ATEC 科技大會期間打造螞蟻開發者樂園,其中包含螞蟻金融科技雲+端一站式體驗以及支付寶小程式挑戰賽兩大環節,SOFA 團隊將在這裡與你相約,我們更是準備了精美的禮品等待大家 ^_^

    舉辦地點:杭州雲棲小鎮國際會展中心場館 B 場館 - ATEC 開發者樂園 CodeLab 區域


    Demo 實現如下:


    解碼 | 25 分鐘開發分散式架構的轉賬小程式


    延伸閱讀:

    深度 | 為你解讀 SOFA-DTX 分散式事務的設計演進路線上篇

    深度 | 為你解讀 SOFA-DTX 分散式事務的設計演進路線下篇


    相關論壇推薦:數字金融架構轉型專場

    時間:9月21日下午13:30-16:30

    在這場論壇上,我們即將習得如何打造安全、穩定、高效、敏捷的基礎架構能力,打造下一代金融核心系統所涉及的關鍵技術和架構,相關話題包括高可用架構、資損防控、智慧運維、容器雲、分散式核心等。


    解碼 | 25 分鐘開發分散式架構的轉賬小程式



    解碼 | 25 分鐘開發分散式架構的轉賬小程式

    長按關注,獲取分散式架構乾貨

    歡迎大家共同打造 SOFAStack https://github.com/alipay





    相關文章