主頁 > 知識庫 > 魅族多機房部署支撐網站運維的方案

魅族多機房部署支撐網站運維的方案

熱門標簽:長春移動外呼系統(tǒng)收費 安陽ai電話機器人價位 智能電話機器人模式 廣東高頻外呼防封系統(tǒng) 樂山400電話申請 400電話申請到易號網 電銷機器人最早是哪家 大連市地圖標注 電銷機器人牌子

魅族系統(tǒng)架構師何偉帶來了主題為《魅族多機房部署方案》的演講,多機房容災是規(guī)模互聯(lián)網企業(yè)的必經之路,魅族經過2014-2015年的轉型以及銷量大爆發(fā)后,對互聯(lián)網業(yè)務的可靠性要求有了新的訴求,再加上近期的光纖被挖斷事故、某大爆炸對某機房的影響等等,都要求我們盡快實施多機房容災方案,本次演講主要介紹魅族在多機房容災的方案以及實施過程中碰到的問題和對策,以及魅族核心機房的遷移方案和問題的解決方案。

對于魅族多機房部署,何偉表示,我將從為什么做多機房部署、多機房部署面臨的挑戰(zhàn)、魅族的多機房部署以及踩到的坑、多機房流量調度,希望分享大家的主要就是這些方面。


   為什么要做多機房部署?
   對于阿里投資魅族大家都知道了,魅族也放開了手機從原來的小而美,真正走向大眾需求,屏幕也從15:9走向了16:9,這也帶來了業(yè)務的高速增長,用戶量暴增,應用商店日PV達到了2.5億、在線音樂達到了2.3億、同步數據量也達到了300億條記錄。
   面對關鍵業(yè)務量的暴增,單機房擴展困難,同時還面臨著單機房無法容災的問題,所謂技術再強,扛不住挖掘機,因此多機房部署迫在眉睫。
   多機房面臨的挑戰(zhàn)
  想要部署多機房,面臨著數據一致性難以保障、跨機房專線昂貴、無保障、流量怎么精準調度、業(yè)務依賴關系復雜、跨機房網絡延遲等等問題。
  對此何偉表示,我們把大部分業(yè)務映射為兩大類,一類是讀多寫少的業(yè)務;一類是按用戶維度劃分的業(yè)務,其中魅族的應用商店特點,就是榜單展示、數據變化少、一致性要求并不是很高,就是對于每一個業(yè)務進行認真分析。
   機房流量調度
  談到機房流量調度,何偉表示,我們主要采用了智能DNS和GSLB這兩種方式,具體如圖所示:

智能DNS

GSLB
 通過這兩種方式,基本上實現了在廣域網上不同地域的服務器建的流量調配,保證使用最佳的服務器離自己最近的用戶,通俗講就是上海用戶訪問上海服務,北京用戶訪問北京服務器,從而確保訪問質量。

遇到的哪些“坑”
  在實施過程中存在的問題是兩個方面,首先是VPN設備CPU占用率過高,其次是異地機房Slave Mysql跟不上Master,經過認真的觀察、抓包分析,最終我們采取的措施,首先針對電信和聯(lián)通做了兩個VPN相互備份;其次核心數據采取QoS保障,最后采用了專門的VPN設備。

魅族多機房方案
我們借鑒以上幾種方案,把業(yè)務進行一些梳理,映射到下面兩種業(yè)務:
(1)讀多寫少
(2)按用戶分離
讀多寫少
這類業(yè)務主要是讀取,極少寫入,所以我們甚至把這類業(yè)務歸納為只讀業(yè)務。
應用商店單機房架構如下圖:

接入端分三種業(yè)務,API、開發(fā)者社區(qū)、運營后臺。
API提供接口給手機端應用商店使用,主要是讀取榜單數據展示給用戶看,這部分“讀”我們基本是從緩存讀取,對數據庫的依賴都很??;再就是少量的“寫”來自一些統(tǒng)計信息、評論等。
而開發(fā)者社區(qū)提供給開發(fā)者和App廠商上傳、維護應用,寫數據比較多,讀寫基本均衡。
后臺提供給公司內部運營部門使用,榜單維護、應用上下架等功能,也有較多的“寫”。
經過對業(yè)務可用性做分級,應用商店(API接口)的可用性要求最高,運營后臺和開發(fā)者社區(qū)的可用性需求稍低。
基于以上分析,我們只需要對應用商店(API接口)提供多機房方案。
應用商店多機房架構如下圖:

核心機房的部署基本不需要改動,我們華東機房的數據通過MySQL的同步功能復制,榜單類數據的讀取與核心機房一致,從Redis緩存讀取。Redis緩存的數據實用定時任務從DB里獲取定時刷到Redis里。
為了保證數據一致性,"寫"依然是單點寫,是跨機房直接寫入核心機房。分兩種,一種是通過消息隊列,寫入遠程機房,即使機房間網絡出現問題,我們 的"寫"可以堆積在MQ里,基本不影響用戶體驗,堆積的數據待網絡通順后再拉去。另一種"寫"要求馬上知道是否"寫"成功,所以是跨機房直接寫入數據庫, 這部分如果網絡出問題,將導致失敗,我們可以做降級處理。
另外機房間流量調度我們實用GSLB來調度,后面有詳細闡述。
讀寫均衡業(yè)務
我們這里的讀寫均衡業(yè)務有一個重要特性,就是所有數據可以按照用戶維度來切分。相互關聯(lián)度不大。例如我們的同步業(yè)務,同步業(yè)務把手機端的所有數據 (聯(lián)系人、短信、設置、wifi、輸入法偏好 ...)同步到云端,遇到手機丟失、刷機需要清數據時,可以隨時把數據拉下來,做到數據永不丟失。
下面是同步業(yè)務單機房架構:

我們的用戶訪問接口也分兩部分,一部分供手機端實用的API,另外一部分在Web端用戶可以直接操作(對聯(lián)系人做修改)。Web接口獲取到的請求轉發(fā)到后端的服務,如聯(lián)系人同步、消息同步、設置項同步等服務。后端服務再根據用戶路由信息,存儲到不同DB分片。
這里做跨機房方案比較方便,直接按照用戶做全局路由,路由到不同機房即可。
跨機房架構圖如下:

我們把業(yè)務數據和服務打包到單個Unit,一個Unit服務一定數量的用戶。每個Unit包含了完整的數據和服務,可以單獨部署。每個機房有多個Unit,每個用戶的數據在本地有一份備份、在遠程同樣也有一份備份。當機房故障時,可以把備份數據拉起來服務用戶。
用戶通過API訪問我們的服務時,使用GSLB來做調度,用戶訪問業(yè)務服務時,先從GSLB獲取用戶數據所在位置(用戶數據同時僅在某一個機房提供服務),然后把客戶端請求調度到合適的機房。
Web請求是一個挑戰(zhàn),因為Web服務無法使用GSLB,所以不能精準的調度用戶請求。這塊的方案在后續(xù)的流量調度里講到。
機房流量的精確調度
說到多機房,就牽涉到流量調度。流量調度最簡單的就是使用智能DNS服務。如下圖:

只能DNS根據LocalDNS來的請求里的IP來判定您是哪個那個ISP,哪個區(qū)域的用戶,從而調度到對應ISP,對應區(qū)域的機房,核心在智能DNS的IP庫。有幾個缺點:
DNS劫持, 在我國,DNS劫持時有發(fā)生,尤其是二三線城市的運營商,明目張膽。這在智能DNS基本無法解決
本地DNS如果設置成用戶自己指定的DNS服務器如8.8.8.8,智能DNS服務器獲取到的LocalDNS是美國地址,也無法對應ISP,智能DNS服務只能按設計者喜好提供解析了,這時可能給用戶解析到錯誤的ISP和錯誤的機房。
無法根據用戶信息來調度,有些數據只在特定機房有,由于DNS協(xié)議無法攜帶用戶標示,所以也很難做到精準解析。
無法感知服務器宕機。
由此就針對特定業(yè)務,我們接入了GSLB服務:

這個服務避開DNS請求,發(fā)起請求前,訪問我們自己的GSLB服務(或者 HttpDNS),業(yè)務可以帶上用戶標識,來定位自己的數據在哪個機房,使用IP來訪問業(yè)務服務。
帶來幾個明顯好處:
* 可以根據IP或者UID等等信息精確調度。
* 避免DNS劫持。
* 用戶手工設置DNS也不會調度錯誤。
目前我們所有客戶端的訪問,都接入GSLB,例如上面提到的應用中心、用戶同步的API訪問等。
但是也存在問題,這種方案僅適應于有客戶端的Http、Https請求,不適合瀏覽器訪問,瀏覽器不清楚你的GSLB是什么東西。用戶同步的API 訪問可以用GSLB來做,但是Web訪問的時候,是不能用GSLB來做流量調度的,因為瀏覽器不認GSLB, 如果使用智能DNS也無法根據用戶ID精準調度流量。
基于以上考慮,我們提出了第三種方案,GSLB+智能DNS:

用戶請求服務前,找到DNS解析到的一個服務器,去獲取數據,后端服務會先找GSLB服務查找用戶數據所在機房,如果用戶數據在本機房,則直接返回數據,否則,重定向用戶請求到合適的機房重新發(fā)起請求。
這種方案可能導致用戶瀏覽器里域名變換,影響用戶體驗,另外依然無法避免域名劫持。

標簽:深圳 滁州 儋州 江門 銀川 克拉瑪依 三明 鶴壁

巨人網絡通訊聲明:本文標題《魅族多機房部署支撐網站運維的方案》,本文關鍵詞  魅族,多,機房,部署,支撐,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《魅族多機房部署支撐網站運維的方案》相關的同類信息!
  • 本頁收集關于魅族多機房部署支撐網站運維的方案的相關信息資訊供網民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章