螞蟻金服mPaaS服務端核心元件體系概述:移動API閘道器MGS

josephjin發表於2018-12-18

根據《開篇 | mPaaS 服務端核心元件體系概述》,我們已經初步瞭解 mPaaS 平臺後端各元件的核心架構體系。

而在 mPaaS 服務端眾多元件中,移動 API 閘道器 MGS 是連線移動客戶端與服務端的元件產品。它簡化了移動端與服務端的資料協議和通訊協議,從而能夠顯著提升開發效率和網路通訊效率,是整個 mPaaS 服務中的核心入口。

接下來我們將著重圍繞 mPaaS MGS 展開介紹,進一步瞭解這款能力有哪些特質:

為什麼需要移動API閘道器

| 行動網路接入架構演進

image | left

傳統的單應用架構在團隊與業務增長,支撐多團隊多業務並行研發方面越發力不從心。伴隨近年微服務架構風格的流行,越來越多的企業將自身服務微服務化,之前的大應用被拆分成為了多個分散的服務提供出來。與此同時,隨著移動網際網路、普惠金融等新機會的迅猛發展,企業越來越迫切地希望將現有成熟的後端服務開放出去。

此時在面對複雜的行動網路環境,前有 Android/iOS/H5/小程式等多種前端需要接入,後有零零散散的各個微服務系統需要匯出,就很有必要有一套可適用於行動網路環境,高效能高可靠易使用,路由不同型別前端與各個後端微服務,幫助各個服務提供統一的限流,快取,安全,監控等處理的移動 API 閘道器做後端總入口。

image | left

mPaaS MGS

| 現代化行動網路接入架構最佳實踐

mPaaS 上的移動 API 閘道器 MGS,來源於支付寶 App 多年億級網路服務技術的積累。在螞蟻內支撐了支付寶、口碑、網商、聚寶、香港版等多個 App 數百個服務上萬個 API,常年保持 99.9999+% 高可用率,具有足夠的穩定性。

作為行動網路技術中“__客戶端到服務端請求-響應模型__”服務,經歷了多年雙十一、雙十二、春節紅包活動的海量請求考驗。在螞蟻金融雲公有云與私有云上,也為 12306,廣發銀行,上海地鐵等客戶提供了高效能高可靠海量服務的支撐。

image | left

MGS 底層利用 Netty 實現了高效的非同步非阻塞服務,4c8g 單機 QPS 可達 1 萬+/s。

前端支援 http / http2 / mmtp 等協議,支援 JSON / protobuf 等傳輸格式,支援客戶端 RPC 與 H5 標準 Rest 請求,可廣泛適用於各種終端請求接入。

同時,為了更好的支援雲上客戶已有業務的需要,MGS 後端支援了 HTTP / Dubbo / SOFA / HRPC / MPC 等異構後端,最大程度相容業務原有服務,還可以用 MGS 提供的 SPI SDK 直接在 API 函式簽名上使用註解註冊到配置中心,通過服務發現免去手動註冊 API 的繁瑣。

image | left

MGS 還內建了簡潔易用的 Web 管控頁面,能輕鬆管理租戶內 App 全域性與各個 API 的功能配置,包括__配置簽名校驗 / 結果快取 / 超時設定 / API 限流 / API Mock / API 授權 / 資料加密 / CORS 跨域 / 資料模型 / 後端地址__等,更改的配置寫入 DB 後會非同步重新整理到機房內各個閘道器節點,保證閘道器在處理客戶端請求時沒有 DB 等額外 IO 操作,進一步提升整體效能。

image | left

MGS 廣泛用於包括金融地鐵等公共服務領域,為了滿足金融級安全監管要求,保障使用者資料的安全性,客戶端網路 SDK 為每個請求資料增加簽名,然後通過 RSA / ECC / 國密等加密演算法對資料加密傳輸到閘道器。

閘道器會驗籤核對身份並將資料解密後轉發到後端業務,後端服務處理完成後閘道器會再加密返回客戶端。 通過這些措施,讓研發同學專注處理業務的同時不用為網路資料安全擔心。

image | left

在面對海量請求時,MGS 會通過結果快取,超時設定,API 限流等功能來幫助後端提高效能,提供過載保護,這樣當大促等高峰期流量過來時,業務服務仍然能夠正常執行,從而保證了業務系統的穩定性,防止高峰期時後臺伺服器被壓垮。

同時閘道器支援限流時配置客戶端提示使用者的文案,方便產品運營定製。

image | left

藉助 API 授權功能,業務可以很方便地通過 MGS 定製包括授權,Session 控制等旁路能力,授權介面本身也以閘道器 API 形式定義,可與其他 API 一樣設定快取限流等各種配置,從而統一業務程式設計模型。另外閘道器 SPI SDK 還支援切面攔截,方便業務服務內整體擴充套件。

image | left

在日常開發測試時,MGS 提供了 API Mock 與 API Test 方便 API 開發測試。

通過 API 客戶端程式碼生成(Android/iOS/JS),自動生成多端 SDK,實現前後端分離,配合 SDK,讓業務研發同學專注業務邏輯,無需關心底層通訊細節,團隊內也無需網路專家,即可直接借力支付寶多年網路優化經驗,從紛繁複雜的行動網路開發中解放,最大化業務開發效率,讓研發從此愛上 API 研發。

image | left

最後,MGS 還提供了完整的資料監控與問題排查方案,通過給每個請求生成唯一的 traceID 做鏈路跟蹤,結合不同型別的錯誤碼,可在出現問題時串起整個鏈路,迅速定位問題找到原因。

image | left

mPaaS MGS 展望

| 支付寶億級閘道器架構能力開放

MGS 除了上述能力外,後續還會不斷升級,為業務帶來更專業更高效的閘道器服務,包括開放 ABTest灰度、HTTP2 協議、移動排程、多機房多活等功能,用支付寶多年技術積累助力企業服務技術升級。

結語

通過本節內容,相信大家對 mPaaS 移動 API 閘道器服務 MGS 有了初步認識。
關於閘道器功能詳細介紹,可以參考 mPaaS 移動閘道器官方文件:
http://t.cn/EUqYgZC

後續我們將針對 mPaaS 其他服務元件的設計與優化,展開更多探討。

往期閱讀

《支付寶客戶端架構解析:iOS 容器化框架初探》

《支付寶客戶端架構解析:Android 容器化框架初探》

《支付寶客戶端架構解析:Android 客戶端啟動速度優化之「垃圾回收」》

《支付寶客戶端架構解析:iOS 客戶端啟動效能優化初探》

關注我們微信公眾號「mPaaS」,獲得第一手 mPaaS 技術實踐乾貨


相關文章