資料同步是 mPaaS 平台的一個核心基礎服務元件。資料同步源自螞蟻集團內面向行動裝置 App、從服務端到用戶端進行海量資料推送的全鏈路解決方案 — SYNC。該組件提供了一個安全的基於傳輸控制通訊協定(Transmission Control Protocol,簡稱 TCP)和安全套接層(Secure Sockets Layer,簡稱 SSL)的資料通道,能夠及時、準確、有序地將伺服器端的業務資料主動地同步(SYNC)到用戶端 App。
傳統的遠端程序呼叫(Remote Procedure Call,簡稱 RPC)已立足互連網行業幾十年,也能滿足絕大部分業務情境和功能需求。但在現階段,隨著移動互連網的全面普及和發展,無論是 App 的規模還是使用者對於 App 的要求都已進入了一個新的階段。傳統的 RPC 請求因其自身的特性,存在許多的不足:
用戶端在特定的情境下需要調用 RPC 請求來擷取最新的資料,而服務端(雲端)實際沒有或僅有少量資料發生變化。
在用戶端啟動時,不同的業務模組、業務功能因設計上的獨立,需要分別進行 RPC 請求來完成各自業務的資料拉取。
用戶端無法及時感知服務端發生的資料變化,只能通過定時輪詢 RPC 介面的方式來重新整理資料。
傳統 RPC 大多基於 HTTP(S) 的短串連進行資料互動,串連上即使使用 keepalive 等特性也無法長期保持串連,無法做到鏈路持續複用。請求建立串連、認證交換、加解密等對網路耗時及效能都會帶來不小的損耗。
為改善或解決上述問題,資料同步應運而生。
功能特性
資料同步具備以下特性:
可靠同步
針對業務要求的 QoS(Quality of Service)等級為必達的業務情境而言,資料同步保證只要使用者在該資料有效期間內活躍並且符合業務推送要求的條件(如用戶端版本號碼、作業系統類型等維度),就一定能使用戶端同步到業務推送的資料。
增量有序
資料同步保證同一個通道內到達用戶端的訊息順序一定是與商務服務器調用資料同步伺服器的順序一致,並且所有訊息以增量方式同步至用戶端。
高即時性
當用戶端串連的網路狀況良好時,資料同步可以保證非常高的推送即時性,訊息推送耗時幾乎是純網路傳輸的耗時(1s 之內送達)。
基本原理
類似於 MySQL 的 binlog 機制,資料同步伺服器和用戶端 SDK 之間傳遞的基本資料單元為 oplog,當業務需要同步一個變更資料到指定的使用者或裝置時,業務調用資料同步介面,資料同步服務端會將業務需要同步的資料變更封裝為一個 oplog 持久化到資料庫,然後當用戶端線上時,將 oplog 推送給用戶端。每個 oplog 擁有一個唯一的 oplog id,oplog id 在確定的使用者、確定的業務範圍內保證唯一併且單調遞增(按調用順序)。資料同步服務端會按照 oplog id 從小到大的順序把每一條 oplog 都推送至用戶端。資料同步服務端和用戶端都會記錄用戶端已經收到的最大 oplog id,稱為同步點(亦可以被理解成資料版本號碼)。
價值優勢
合并推送
用戶端初始化成功時,服務端可一次性推送多個業務資料,減少不同業務的請求。
增量推送
只在有增量資料時才推送業務資料,可有效減少冗餘資料的傳輸,降低網路成本。
減少請求
在沒有增量資料時,不會消耗請求成本,減少業務的冗餘請求。
提高時效
當服務端發生資料變化時,可在最短時間內將變化資料直接推送至用戶端,無需等待用戶端請求。
提升體驗
資料無感知推送,在渲染用戶端介面之前,資料已到位,降低了使用者等待時間。
使用情境
資料同步可應用於用戶端內需要即時推送資料的業務情境,如轉賬結果推送、支付結果推送、訊息中心等。您可以通過以下情境對資料同步的能力有更深入瞭解。
在即時通訊 App 中,資料同步提供增量、可靠的訊息觸達能力,將聊天訊息按發送方的發送順序,有序推送至指定使用者。
在需要動態更新配置的 App 中,資料同步可以動態地將配置資訊進行全裝置推送。將 App 功能開關、動態參數、動態配置等資訊即時推送至指定用戶端,或者批量動態地改變 App 在運行期間的業務參數、業務配置。
在支付類 App 中,資料同步能夠為交易資料的線上推送提供安全資料通道,保證線上 App 可即時接收推送資料。同時資料同步還能夠提供資料持久化能力,使 App 在下一次上線時收到不線上期間的推送資料。