1. 程式人生 > >雲時代架構之荔枝架構實踐與演進歷程

雲時代架構之荔枝架構實踐與演進歷程

能夠 業務開發 垂直 有一個 導致 不能 之間 ech 項目

荔枝架構實踐與演進歷程

  好的系統不是設計出來的,而是演進出來的。荔枝APP,致力於打造聲音處理平臺,幫助人們展現自己的聲音才華。荔枝集錄制、編輯、存儲、收聽、分享於一體,依托聲音底層技術積澱,具有聲音節目錄制功能,可在手機內完成錄音、剪輯、音頻上傳和語音直播。簡單理解,荔枝APP上有很多主播,主播和用戶之間可以通過聲音互動。目前,荔枝APP月均活躍用戶達到好幾千萬,月均活躍主播達到好幾百萬,全球註冊用戶和音頻節目數量都已過億。那麽,對於有著大用戶量的社交APP來說,荔枝APP的背後架構該如何設計?它的成功經歷了什麽演進歷程?

  單體架構主要特點是APP 直連服務器,服務端是單體架構。也就是說,一個服務,一個存儲解決所有問題。這種架構看上去簡單、粗暴,好處是快速上線、快速響應市場需求

;但劣勢也非常明顯,APP直連服務器模式在擴展的時候非常不靈活。項目上線後3個月,用戶數突破 100萬,訪問量上漲,服務器壓力增大。

  垂直架構雖然,這個時候已經能做到相對快速交互,但是依然存在很多問題。一個是,後端服務水平擴展時,不能動態化;另外,系統間采用 http 交互時,通訊效率較低,並且數據包較大;還有一個問題是,json 解析速度較慢、體積較大。所以使用 LVS 集群解決了分發請求,但是隨著業務的快速發展,人力資源都投入在業務開發上,對第三方產品了解也不夠深入,導致運維成了最大挑戰。所以,後期考慮采用自己開發代理服務來取代 LVS。另外,還有一個挑戰是,隨著用戶量、訪問量的持續上漲,系統訪問壓力依然很大。接下來的目標是,

app server 與後端服務需要按業務垂直拆分。演化到V5.0版架構的時候,所有服務已經能夠按業務拆分,可支持水平擴展,整體架構能抗得住一定的訪問壓力。201410月,用戶量曾突破 1千萬。

  分布式架構,這時候的特點是app server、後端服務、代理層等,都實現了配置熱更,能靈活水平擴展。到20159月,用戶量曾突破 5千萬。但是面臨的問題依然很多。比如:mysqlredis 操作的重復代碼太多;mysqlredis 慢操作不能及時報警;各個服務的數據源配置分散,難以管理等。另外,還涉及跨機房數據操作和數據同步問題。而分布式數據庫中間件可以很好地解決這些問題。

  分布式數據庫中間件,這時,開發團隊自研了分布式數據庫中間件

data store服務。data store的特點是:簡單易用,可減少重復代碼。只需要在類上加上註解,就可以實現與數據庫的交互、數據轉換等功能,大大減少了開發的工作量。另外,data store具有自動維護緩存和數據庫表的對應關系、自動維護緩存與數據庫數據的一致性的功能。最重要的是,屏蔽了服務對數據源的管理,便於數據庫的遷移和擴容等操作。

  監控體系,整個架構已趨於完善,重點引入第三方產品,建立監控體系,完善對服務器資源、業務、跟蹤鏈路等的監控,同時也擴展了分布式服務框架功能。也是從這個時候開始,整個架構迎來了V8.0版。經過完善後,業務監控及基礎監控功能已比較完整,分布式服務框架擴展了接口緩存、熔斷、降級、過載保護等功能。

文章來源:

https://mp.weixin.qq.com/s?__biz=MzA5MDc1ODQxMw==&mid=2653325500&idx=1&sn=efa02d6e6010f6e1a942e949d13cd075&chksm=8bd4e4debca36dc82e8bf757f829747a128c428f4c62c87388d8f17887519075dd957d727045&scene=21#wechat_redirect

雲時代架構之荔枝架構實踐與演進歷程