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

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

image.png

做者|伍振河 博時基金互聯網金融部架構師 、曾志 博時基金互聯網金融部開發主管數據庫

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

在中國新經濟高質量及科技創新發展的背景下,衆多金融類的互聯網平臺與基金公司展開合做。互聯網金融科技與傳統金融業務的融合,促使傳統金融公司的信息技術系統更加開放。
微信小程序

據此,2020 年,博時基金互聯網金融部啓動了互聯網開放平臺 Matrix 的建設工做。
安全

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

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

傳統的金融系統架構受到了互聯網化的挑戰,主要表如今如下幾個方面:
微信

1) 互聯網入口缺少管控
網絡

有多個團隊提供不一樣形式的互聯網服務,接口協議和權限管控方式不一致。當服務和接口愈來愈多時,API 管控能力不足的問題將會突顯。
架構

2) 系統較爲封閉,開放能力不足
負載均衡

傳統基金行業系統生態較爲封閉,與合做夥伴開放生態的能力有待提高。
框架

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

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

二、系統建設目標

1)多渠道統一安全接入

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

Matrix 開放給通過博時互聯網平臺資質認證後的第三方平臺使用,須要根據第三方平臺識別的不一樣身份,進行接口級別權限管控。

2)提供開放能力

搭建開放平臺,與合做夥伴共建開放生態。在獲得 Matrix 平臺的受權後,第三方平臺開發者能夠經過調用博時基金互聯網開放平臺的接口能力,爲第三方平臺提供基金產品信息查詢、註冊開戶、積分兌換、基金申贖、資產查詢、聯合登陸等全方位服務;第三方平臺能夠根據自身實際狀況自由選擇或組合 APP 、微信公衆號、微信小程序、H5 等前端方式對接。

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

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

Matrix 建設思路

一、整體架構

1)互聯網架構圖

基於 Spring Cloud 微服務套件和 RocketMQ 消息中間件,搭建的企業級雲原生架構。

image.png

二、關鍵組件

1)API 網關

API 網關是微服務架構重要組件之一,是服務惟一入口。API 網關封裝內部系統架構,橫向抽離通用功能,如:權限校驗、熔斷限流、負載均衡等。經過 API 網關能夠把內部 API 統一管控起來。

image.png
目前博時基金的互聯網業務接入入口主要分爲 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 給事務中心。

image.png

反查機制:

因爲網絡抖動、業務系統重啓等緣由,可能致使事務消息的二次確認丟失。此時須要依賴反查機制恢復整個分佈式事務的上下文。RocketMQ 提供的 Message Status Check 機制正是爲解決分佈式事務中的超時問題而設計的。事務中心的反查機制流程主要是,先檢查事務中心的內部狀態,再經過反查接口檢查本地事務的執行結果,恢復事務上下文後,正常推動後續的流程。

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

2) 用於系統間解耦

業務場景:

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

實現原理:

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

image.png

3) 異步調用

業務場景:

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

實現原理:

將非核心的業務流程異步化能夠減小系統的響應時間,提升吞吐量,是系統優化的經常使用手段。RocketMQ 提供了高效的通訊機制,業務系統使用起來很是方便。

總結與將來展望

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

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

在將來,將會有更多的合做夥伴接入 Matrix ,但願咱們能一塊兒暢遊在創新科技的星辰大海中,合做雙贏。

原文連接

本文爲阿里雲原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索