天天看點

讀《億級使用者下的新浪微網誌平台架構》有感

讀《億級使用者下的新浪微網誌平台架構》有感

對我來說,我使用最多的社交app就是微網誌和qq,準确的來說微網誌比qq用得更多。衆所周知,微網誌由億級的使用者,每分鐘每秒鐘的話題點選量都是無法預計的,所有我很好奇微網誌平台的架構,然後就去閱讀了這篇文章。

從文章來看微網誌平台第一代架構為LAMP架構,資料庫使用的是MyIsam,背景用的是php,緩存為Memcache。随着應用規模的增長,衍生出的第二代架構對業務功能進行了子產品化、服務化群組件化,背景系統從php替換為Java,逐漸形成SOA架構,在很長一段時間支撐了微網誌平台的業務發展。

在此基礎上又經過長時間的重構、線上運作、思索與沉澱,平台形成了第三代架構體系。

微網誌平台的第三代技術體系,使用正交分解法建立模型:在水準方向,采用典型的三級分層模型,即接口層、服務層與資源層;在垂直方向,進一步細分為業務架構、技術架構、監控平台與服務治理平台。接下來是從水準分詞來講微網誌的架構:水準分層

水準次元的劃分,在大中型網際網路背景業務系統的設計中非常基礎,在平台的每一代技術體系中都有展現。這裡還是簡單介紹一下,為後續垂直次元的延伸講解做鋪墊:

1. 接口層主要實作與Web頁面、移動用戶端的接口互動,定義統一的接口規範,平台最核心的三個接口服務分别是内容(Feed)服務、使用者關系服務及通訊服務(單發私信、群發、群聊)。

2. 服務層主要把核心業務子產品化、服務化,這裡又分為兩類服務,一類為原子服務,其定義是不依賴任何其他服務的服務子產品,比如常用的短鍊服務、發号器服務都屬于這一類。圖中使用泳道隔離,表示它們的獨立性。另外一類為組合服務,通過各種原子服務和業務邏輯的組合來完成服務,比如Feed服務、通訊服務,它們除了本身的業務邏輯,還依賴短鍊、使用者及發号器服務。

3. 資源層主要是資料模型的存儲,包含通用的緩存資源Redis和Memcached,以及持久化資料庫存儲MySQL、HBase,或者分布式檔案系統TFS以及Sina S3服務。

水準分層有一個特點,依賴關系都是從上往下,上層的服務依賴下層,下層的服務不會依賴上層,建構了一種簡單直接的依賴關系。

與分層模型相對應,微網誌系統中的伺服器主要包括三種類型:前端機(提供 API 接口服務)、隊列機(處理上行業務邏輯,主要是資料寫入)和存儲(mc、mysql、mcq、redis 、HBase等)。同時還包括:垂直延伸技術架構,接口層Web V4架構,服務層架構,資源層架構,垂直的監控與服務治理。

由此微網誌的技術團隊,開發了WatchMan系統,應用在所有業務場景中,運維基于此系統完善監控平台,業務和運維共同使用此系統,完成分布式服務治理,包括服務擴容與縮容、服務降級、流量切換、服務釋出與灰階。

本文參考文獻:PHP100中文獻《億級使用者下的新浪微網誌平台架構》

轉載于:https://www.cnblogs.com/sunshine-z/p/11054017.html