魅族架構師胡成元 剖析魅族應用商店架構
原創魅族應用商店作為國內最早的應用分發平臺,國內首創了許多新業務模式,比較典型的有應用內付費。但受限于其早期的封閉生態,發展速度緩慢,這并不影響魅族人對技術架構的追尋與探索。
【作者簡介】
胡成元·魅族Flyme互聯網架構師
胡成元,魅族Flyme互聯網架構師。2011年加入魅族, 一直致力于移動應用架構研發,提升產品體驗和研發效率, 目前主要負責魅族應用商店的研發架構工作。
服務化框架
平臺早期,規模小、結構簡單,職責多、關系復雜、變更影響大、擴展難。伴隨公司互聯網轉型,用戶規模高速增長,原有架構完全無法很好的服務大規模的Flyme用戶。
應用分發平臺主要解決兩個問題,一是如何讓Flyme用戶方便快捷的找到自己需要的應用;另一個是如何幫助開發者簡單迅速的將應用推廣給Flyme用戶。基于這兩個基本需求,我們把業務邏輯模塊化,單元化。拆分出了應用管理、應用展示(榜單)、應用推薦(個性化推薦)、應用搜索等多個服務。
服務分為兩類,一類是基礎服務,該類型服務不依賴其他服務,業務邏輯簡單,僅提供基礎業務邏輯,例如應用詳情服務。另一類是聚合服務,該類聚合多個基礎服務,形成相對復雜的業務邏輯,例如應用搜索服務。
服務間采用自研的Kiev框架通訊,當然也有成型的開源方案(DUBBO)可以選擇。Kiev底層通訊基于Netty網絡框架,序列化支持協議支持Hessian、Protobuffer等,通訊協議支持TCP、UDP等。框架基于ZK(ZooKeeper)實現了High Availability與Load Balance策略。服務調用時會采樣生成詳細的調用鏈,收集產生豐富的服務狀態數據(Response Time,QPS),為服務治理提供了詳實有力數據支撐。
接口規范
接口眾多、形式多樣,管理維護成本搞,為了規范開發流程、便于問題跟蹤定位,我們制定了統一的接口規范。例如接口采用RESTful風格,統一的接口返回形式,約定每個業務層的錯誤編碼,每個錯誤編碼還會攜帶可選的錯誤提示,方便問題跟蹤。
安全性也是平臺不可忽略的一個關鍵點,基于通用型的原則,我們采用了業界通用OAuth協議來保障接口安全。為了應對異常流量對系統造成的沖擊,我們給接口層添加了流量控制功能。
#p#
分布式緩存
平臺早期,分發接口采用DB+本地緩存的方式提供數據,這種模式DB壓力大、接口吞吐量小、本地緩存更新不及時。為了解決這些問題,我們引入的分布式緩存Redis。業務接口數據全部被緩存到Redis集群,緩存數據由定時任務主動刷新,零穿透,緩存即存儲、存儲即緩存。依托Redis的高性能極大的提高了系統吞吐量。Redis集群先按業務場景做垂直切分、再根據數據量做水平分片。業務通過代理(Twemproxy)連接所有分片。 Redis集群基于ZK實現High Availability,基于定制化腳本實現線上自動擴容,這樣既保障了緩存集群的高可用性,又滿足了集群容量自動擴充的需求。
MySQL水平分片
隨著用戶規模增長,單庫單表已無法滿足業務需求,為此我們將數據量大的用戶數據橫向拆分出多個數據庫。為了降低運維成本,我們采用了單實例多數據庫的部署模式。業務層通過分庫路由組件透明的訪問數據庫。當單實例多數據庫的模式無法支撐當前業務需求時,通過更新路由規則就可以平滑的完成DB擴容。
水平分層、垂直拓展
如下圖所示。橫向、典型的三層架構。縱向、以業務為驅動,積累沉淀了眾多技術規范、基礎組件,豐富完善了全棧業務監控。依托完善的監控體系,衍生出了相應的服務治理機制。
消息隊列(MetaQ)
消息隊列是分布式應用間交換信息的一種技術。為了解耦核心業務及輔助業務。我們引入消息隊列,將搜索團隊、大數據團隊需要的業務數據定期全量同步,實時增量更新。既隔離了業務間的強耦合,又保障了數據的及時性。
多機房部署
當業務規模增長到一定規模后,機房的網絡、帶塊、機架等相關資源都會成為瓶頸。所有的雞蛋放在一個籃子里,對產品來說也是一個巨大的風險點。為此我們陸續引進了主備機房、雙活機房、多地多中心的部署結構。為了動態調度機房間流量,保障用戶就近訪問,故障無縫切換,我們上線了GSLB(Global Server Load Balance)。
下載防劫持
HTTP劫持是指網頁或文件在網絡節點間傳輸時,信息被篡改替換的網絡攻擊行為。近來國內各大應用分發平臺都有不同的程度的應用下載被劫持現象,我們也難置身事外,為此,我們上線文件下載防劫持方案。
如下圖所示。平臺客戶端在下載應用前后根據應用分發時攜帶的應用信息校驗應用文件(APK)的合法性,如果文件校驗成功,直接下載并安裝應用,否則更換為HTTPS通道繼續下載應用。為防止CDN與源站的網絡被劫持,CDN回原前后也會校驗文件信息。無論劫持動作是否成功修復,客戶端均會上報操作日志,以便分析改進防劫持功能。
業務在不斷發展,架構也隨之而演進。魅族人也在不斷追尋夢想。
了解更多魅族應用商店精彩信息戳這里http://open.flyme.cn。