国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

對話架構師:魅族應用商店云端架構實踐

468122151 / 2448人閱讀

摘要:本文系魅族架構師胡成元,在直聘主辦的直聘學院對話架構師活動上的分享整理,介紹魅族應用商店云端架構實踐的總結。年加入魅族,一直致力于移動應用架構研發,提升產品體驗和研發效率。目前主要負責魅族應用商店的研發工作,關注服務化分布式大數據等領域。

本文系魅族Flyme架構師胡成元,在Boss直聘主辦的直聘學院「對話架構師」活動上的分享整理,介紹魅族應用商店云端架構實踐的總結。

胡成元,Boss直聘「直聘學院」特邀分享嘉賓。2011年加入魅族,一直致力于移動應用架構研發,提升產品體驗和研發效率。 目前主要負責魅族應用商店的研發工作,關注服務化、分布式、NoSQL、大數據等領域。

以下是分享實錄整理:《 魅族應用商店云端架構實踐 》

魅族應用商店作為國內最早的應用分發平臺,積極探索,首創了許多新業務模式,比較典型的:應用內付費。受限于早期的封閉生態,其發展速度緩慢,這并不影響魅族人對技術架構的追尋與創新。

水平分層、垂直拓展
應用商店首先定位于應用管理平臺,其次更是應用分發平臺,其典型業務場景包括:
?幫助Flyme用戶找應用;
?幫助Flyme開發者推廣、分發應用;
?營造維護應用分發生態圈。

根據業務場景,不難推導出業務架構特點:
?讀多寫少;
?請求量大、并發高;
?系統要求延時低;
?數據規模可控;
?用戶關聯弱。

隨著用戶規模的增長,不斷的重構、線上運行、探索與沉淀,逐步形成了當前平臺的架構。如下圖所示。橫向、典型的三層架構;縱向、以業務為驅動,積累沉淀了眾多技術規范、基礎組件,豐富完善全棧業務監控。依托完善的監控體系,衍生出相應的服務治理機制。

服務化框架
平臺早期,規模小、結構簡單。伴隨公司互聯網轉型,用戶規模高速增長、業務增多,平臺關系復雜、擴展難、開發效率低,原有架構完全無法服務大規模的Flyme用戶。

為了減少業務依賴、提升集群效率、提高開發部署效率,我們基于業務典型場景,把業務邏輯模塊化,單元化。拆分出了應用管理、應用展示(榜單)、應用推薦(個性化推薦)、應用搜索等多個服務。

服務分為兩類,一類是基礎服務,該類不依賴其他服務,業務邏輯簡單,僅提供基礎業務邏輯,例如應用管理服務。另一類是聚合服務,該類聚合多個基礎服務,形成相對復雜的業務邏輯,例如應用搜索服務。

成型服務化框架能滿足大眾化的需求,如遠程調用、動態發現、負載均衡、監控等,同時勢必會引入一些無關的功能,影響性能。外加此類產品無法滿足我們的定制化需求,我們重復造輪子。

與以往同類產品不同,我們做了如下改進:
?精細化度量指標
?實時度量計算
?系統依賴、調用鏈
?無縫IT系統集成

服務間采用自研的Kiev框架通訊。Kiev底層通訊基于Netty網絡框架,序列化支持協議支持Hessian、Protobuffer等,支持跨語言(C/Java)調用,通訊協議支持TCP、UDP等。框架基于ZK(ZooKeeper)實現了High Availability與Load Balance策略。服務調用時會采樣,生成詳細的調用鏈,收集,產生豐富的服務狀態數據(Response Time,QPS),為服務治理提供了詳實有力的數據支撐。

消息隊列(MetaQ)
消息隊列是分布式應用間交換信息的一種技術。為了解核心業務及輔助業務,我們引入消息隊列,將搜索團隊、大數據團隊需要的業務數據定期全量同步,實時增量更新。既隔離了業務間的強耦合,又保障了數據的及時性。

接口規范
接口眾多、形式多樣,管理維護成本高,為了規范開發流程、便于問題跟蹤定位,我們制定了統一的接口規范。例如接口采用RESTful風格,統一接口返回形式,約定每個業務層的錯誤編碼,每個錯誤編碼還會攜帶可選的錯誤提示,方便問題跟蹤。

安全性也是平臺不可忽略的一個關鍵點,基于通用型的原則,我們采用了業界通用OAuth協議來保障接口安全。為了應對異常流量對系統造成的沖擊,我們給接口層添加了流量控制功能。

分布式緩存
平臺早期,分發接口采用DB+本地緩存的方式提供數據,這種模式DB壓力大、接口吞吐量小、本地緩存更新不及時。為了解決這些問題,我們引入分布式緩存Redis。業務接口數據全部被緩存到Redis集群,緩存數據由定時任務主動刷新,零穿透,緩存即存儲、存儲即緩存。依托Redis的高性能極大的提高了系統吞吐量。Redis集群先按業務場景做垂直切分、再根據數據量做水平分片。業務通過代理(Twemproxy)連接所有分片。 Redis集群基于ZK實現HA(High Availability),基于定制化腳本實現線上自動擴容,這樣既保障了緩存集群的高可用性,又滿足了集群容量自動擴充的需求。

MySQL水平分片

隨著用戶規模增長,單庫單表已無法滿足業務需求,為此我們將數據量大的用戶數據庫橫向拆分出多個數據庫。為了降低運維成本,我們采用了單實例多數據庫的部署模式。業務層通過分庫路由組件透明的訪問數據庫。當單實例多數據庫的模式無法支撐當前業務需求時,通過更新路由規則就可以平滑的完成DB擴容。

GSLB(Global Server Load Balance)

使用域名提供服務的互聯網企業,都無法避免在有中國特色的互聯網環境中遭遇到各種域名被緩存、用戶跨網訪問緩慢等問題。Flyme互聯網基礎架構團隊推出了一種全新的域名解析調度系統:GSLB。GSLB是為移動客戶端量身定做的基于Http(s)協議的流量調度解決方案,解決LocalDNS解析異常以及流量調度不準。

GSLB的原理非常簡單,主要有兩步:
A.客戶端直接訪問GSLB服務接口,獲取業務在GSLB服務中配置的訪問最優的IP。基于容災考慮,我們保留了運營商LocalDNS域名解析的方式。
B.客戶端獲取到的業務服務IP后,直接向此IP發送業務協議請求。

GSLB將域名解析的協議由DNS協議換成了Http(s)協議,并不復雜。但是這一轉換,卻帶來了許多收益:

A.解決域名解析異常:用戶使用Http(s)協議向魅族GSLB服務發起域名解析請求,繞過了運營商的LocalDNS,用戶在客戶端的域名解析請求將不會遭受到域名解析異常的困擾,有效預防DNS劫持。
B.用戶就近訪問:GSLB能直接獲取到用戶IP,結合魅族自有IP地址庫以及測速機制,可以為用戶搜索最優的IDC服務節點。
C.實現精準流量調度:流量異常(周年慶推廣活動)或機房故障時,方便快捷的將流量平滑的調度到附近的機房,保障服務的高可用性。

下載防劫持

運營商HTTP劫持推送廣告的情況相信大家并不陌生,近來國內各大應用分發平臺都有不同的程度的應用下載被劫持現象,我們也難置身事外,為此,我們上線文件下載防劫持方案。

如下圖所示。應用商店在分發應用時,會同時分發應用文件的摘要等相關信息,客戶端下載獲取到應用文件(Apk)后,會計算并比對文件的摘要,以此來判別文件是否被修改或替換。如果文件比對失敗,則更換為HTTPS通道繼續下載應用。為防止CDN與源站的網絡被劫持,CDN回源前后也會校驗文件信息。

除了比對應用文件的摘要,我們還會比對文件的大小、包名(Android應用的唯一標識)、版本號等信息。針對APK下載場景,生產環境我們主要使用文件大小和包名來做校驗。

有些游戲應用文件比較大,如熱門游戲《植物大戰僵尸》大小在100M左右、熱門網絡游戲《夢幻西游》大小在300M左右。如果全量計算文件摘要這樣會比較耗時、耗資源,對硬件資源有限的手機來說是一筆很大的開銷,勢必會影響到用戶的操作體驗。為此,針對大文件,我們采用了部分比對文件摘要的方式。

應用商店應用數量大、渠道不單一,為了預防分發信息異常造成大面積應用下載失敗事故,云端新增了動態關閉、調整客戶端判別邏輯的機制。

無論劫持動作是否成功修復,客戶端均會上報操作日志,借助大數據的優勢,我們可以分析改進防劫持效果。

[對話架構師] 是Boss直聘「直聘學院」旗下對話系列沙龍。聯合業內明星創業公司&合作伙伴聯合發起,為架構師、運維、程序員、開發者等舉辦的技術沙龍,旨在通過大咖干貨分享,構建純業內、純技術交流圈,共同推動技術進步。此次活動參與對象主要是CTO,架構師,運維和技術經理等。
主辦:Boss直聘(互聯網招聘第一APP)
特別支持社區:SegmentFault

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/65390.html

相關文章

發表評論

0條評論

468122151

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<