博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

隨著近兩年業績的搶眼,公募基金迎來了乘風破浪式的發展,截至 2021 年 1 月底,資產管理規模已破 20 萬億,創下了歷史新高。

在中國新經濟高質量及科技創新發展的背景下,眾多金融類的網際網路平臺與基金公司展開合作。網際網路金融科技與傳統金融業務的融合,促使傳統金融公司的資訊科技系統更加開放。

據此,2020 年,博時基金網際網路金融部啟動了網際網路開放平臺 Matrix 的建設工作。

博時基金網際網路開放平臺 Matrix 建設背景與目標

1、傳統金融架構遇到的問題與挑戰

傳統的金融系統架構受到了網際網路化的挑戰,主要表現在以下幾個方面:

1) 網際網路入口缺乏管控

有多個團隊提供不同形式的網際網路服務,介面協議和許可權管控方式不一致。當服務和介面越來越多時,API 管控能力不足的問題將會突顯。

2) 系統較為封閉,開放能力不足

傳統基金行業系統生態較為封閉,與合作伙伴開放生態的能力有待提升。

3) 金融場景化封裝能力不足

傳統基金行業系統普遍依賴於底層資料庫提供的 ACID 特性實現事務一致性。微服務化之後,這套機制對金融場景化的產品包裝能力顯得捉襟見肘。

2、系統建設目標

1)多渠道統一安全接入

為自有系統與運營廠商提供標準化統一接入,實現內外部 API 統一的管控。

Matrix 開放給經過博時網際網路平臺資質認證後的第三方平臺使用,需要根據第三方平臺識別的不同身份,進行介面級別許可權管控。

2)提供開放能力

搭建開放平臺,與合作伙伴共建開放生態。在得到 Matrix 平臺的授權後,第三方平臺開發者可以透過呼叫博時基金網際網路開放平臺的介面能力,為第三方平臺提供基金產品資訊查詢、註冊開戶、積分兌換、基金申贖、資產查詢、聯合登入等全方位服務;第三方平臺可以根據自身實際情況自由選擇或組合 APP 、微信公眾號、微信小程式、H5 等前端方式對接。

3)封裝基金行業特色功能

應用層實現分散式事務框架以保證整體事務的一致性。基於此,封裝優惠購、投資陪伴等複雜的金融場景化功能,讓開發者專注於業務開發,提升客戶的投資體驗。

Matrix 建設思路

1、總體架構

​1)網際網路架構圖​基於 Spring Cloud 微服務套件和 RocketMQ 訊息中介軟體,搭建的企業級雲原生架構。

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

2、關鍵元件​

1)API 閘道器

API 閘道器是微服務架構重要元件之一,是服務唯一入口。API 閘道器封裝內部系統架構,橫向抽離通用功能,如:許可權校驗、熔斷限流、負載均衡等。透過 API 閘道器可以把內部 API 統一管控起來。

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

目前博時基金的網際網路業務接入入口主要分為 3 類:

面向自營業務的博時基金移動端 APP 和 H5 。

面向直銷前置等合作伙伴的 OpenAPI 。即作為開放平臺的入口,服務的 OpenAPI 會提供有條件的訪問限制(時間、流量、頻率),需要考慮流量控制、安全認證、介面授權方面的管理。

面向企業內部管理系統的 API ,提供企業內部系統訪問。

Matrix 的 API 閘道器基於 Spring Cloud Gateway 構建,SCG 內建的 Route、Predicate 和 Filter 模組可以方便擴展出路由轉發、統一鑑權等跨橫切面的功能。基於內外部網路隔離的需求,我們獨立部署了兩套閘道器,其中 Kylin 閘道器提供網際網路接入。Phoenix 閘道器用於域內系統接入,提供域賬戶的訪問許可權控制。

2)認證中心

為了保護 OpenAPI 的安全,避免惡意訪問、未授權訪問、駭客攻擊等導致的安全隱患,開放平臺需要增加授權認證模組。同時,在博時的內部的應用系統之間,也有單點登入的需求。統一的認證中心是微服務架構的必備元件。

Matrix 基於 OAuth2 協議構建了統一認證中心,實現使用者、應用、介面的統一認證和鑑權。OAuth2 核心思路是透過各類認證手段認證使用者身份,並頒發 Token ,使得第三方應用可以使用該令牌在限定時間、限定範圍訪問指定資源。Matrix 支援 OAuth2 的 Authorization Code 、Resource Owner Credentials 和 Client Credentials 三種授權型別,根據不同的應用場景,採用不同的授權型別頒發 Token ,為開放平臺的安全保駕護航。

3)RocketMQ 訊息中介軟體

技術選型

在技術選型過程中,我們主要考慮以下幾點:

首先必須是國產化的產品,其次是比較流行並且社群活躍度高的開源產品。

另外,重點關注的 MQ 特性:

訊息可靠傳遞,即確保不丟訊息。

分散式事務,需要支援分散式事務,降低業務的複雜性。

效能,我們的場景主要是線上的金融類業務,需要 MQ 具備支援金融級的低延遲特性。

最後,從架構演進的角度來考慮,需要無縫對接我們的混合雲架構,最終我們選擇了 RocketMQ。

RocketMQ 是阿里巴巴自主研發及雙 11 交易核心鏈路訊息產品,提供金融級高可靠訊息服務。在開源方面,開源 RocketMQ 已經完成了雲原生技術棧的整合,包括Knative 中的事件源,Prometheus 的 Exporter,K8s 的 Operator 等;也支援了微服務框架 SpringCloud 以及函式計算框架 OpenWhisk ;同時開發了很多 Connector 作為 Sink 或者 Source 去連線了 ELK、Flume、Flink、Hadoop 等大資料和資料分析領域的優秀開源產品。

在 Matrix 開放平臺,RocketMQ 主要有三類應用場景。

1) 用於金融產品的場景化包裝

業務場景:

典型的業務場景如優惠購,基民透過優惠購功能申購基金,可將交易費率降為0。簡單來說就是先購買博時貨幣基金,再透過快速轉購的方式買入目標基金,豁免相關轉換費率。

實現原理:

Matrix 基於 RocketMQ 的事務訊息搭建了一個高可靠、高可用的事務訊息平臺——-事務中心,涉及業務流程如下:

第一階段是 Prepare ,即業務系統將 RocketMQ 的半事務訊息傳送到事務中心,事務中心不做釋出,等待二次確認。Prepare 完成之後,業務系統執行主事務,即購買貨幣基金,成功後 commit 到事務中心,由事務中心投遞訊息到從事務。如果主事務失敗,就投遞 rollback 給事務中心。

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

反查機制:

由於網路抖動、業務系統重啟等原因,可能導致事務訊息的二次確認丟失。此時需要依賴反查機制恢復整個分散式事務的上下文。RocketMQ 提供的 Message Status Check 機制正是為解決分散式事務中的超時問題而設計的。事務中心的反查機制流程主要是,先檢查事務中心的內部狀態,再透過反查介面檢查本地事務的執行結果,恢復事務上下文後,正常推進後續的流程。

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

依賴於 RocketMQ 提供的事務訊息,事務中心在應用層實現了分散式事務,大大提升了對金融產品的場景化包裝能力。

2) 用於系統間解耦

業務場景:

部門 A 負責根據市場、產品和客戶的陪伴場景輸出優質的陪伴內容,部門 B 負責把這些陪伴內容觸達到不同的渠道和使用者。

實現原理:

部門 A 的陪伴事件觸發服務和部門 B 的陪伴觸達服務之間透過 RocketMQ 訊息進行業務解耦,即雙方沒有依賴關係,也不必同時線上。​

博時基金基於 RocketMQ 的網際網路開放平臺 Matrix 架構實踐

3) 非同步呼叫

業務場景:

非同步呼叫的使用場景比較多,如使用者註冊、使用者關鍵行為跟蹤等。其中使用者行為跟蹤場景,在服務端非同步記錄使用者的關鍵行為及相關屬性,可為使用者分等級運營和精準營銷打下基礎。

實現原理:

將非核心的業務流程非同步化可以減少系統的響應時間,提高吞吐量,是系統最佳化的常用手段。RocketMQ 提供了高效的通訊機制,業務系統使用起來非常方便。

總結與未來展望

隨著網際網路技術在金融領域的不斷滲透和金融創新業態的發展,公募基金網際網路業務需要不斷進行流程改造、模式創新及服務能力升級,在最佳化場景體驗的基礎上,持續打造基於平臺、場景和產品三位一體的網際網路服務平臺。

Matrix 經過一年多的建設,目前已具備多渠道統一接入、第三方生態互聯互通、基金特色交易場景化封裝等功能特性。Matrix 透過建設有品質、有溫度的陪伴,從技術上和體驗上,讓使用者理解風險,理解投資,進而為客戶持續創造價值。

在未來,將會有更多的合作伙伴接入 Matrix ,希望我們能一起暢遊在創新科技的星辰大海中,合作共贏。

作者|伍振河 博時基金網際網路金融部架構師 、曾志 博時基金網際網路金融部開發主管

相關文章