LinkedIn網站架構設計啟示

jopen 10年前發布 | 36K 次閱讀 架構 軟件架構

本文是閱讀后的一些總結思考。


簡介

LinkedIn創建于2003年,擁有(指發布那個PPT時的統計數字):

  • 兩千兩百萬注冊會員
  • 每月4百萬UV(Unique Visitor)
  • 每天四千萬PV(Page View)
  • 每天兩百萬次搜索
  • 每天25萬次邀請
  • 每天一百萬個答案被發布


工作流程

  • 持續集成、持續發布,每個版本的開發周期控制在2-4周,使用了Hudson結合SVN
  • 所有任務都被分割成小的可控的工程卡片,LinkedIn內部開發了一個系統支持這種工程卡片,有點類似敏捷開發中的CRC卡片
  • 注重測試:單元測試和集成測試,除了使用單元測試和集成測試工具外,還使用EasyMock來避免頻繁集成測試耗時太長的缺點
  • 盡量避免會議,站立式會議


整體架構演化

2003年-2005年的架構如下:

LinkedIn網站架構設計啟示    

特點:

  • 結構簡單,核心數據庫只有一個
  • GUI層、業務邏輯層(BL Layer)和服務層(Services Layer)都放在同一個Web服務器上

2006年的架構如下:

LinkedIn網站架構設計啟示

特點:

  • 相比之前搜索模塊被單獨提出來
  • 最大的變化是數據訪問層,增加了Databus這種分布式總線式數據處理管道,并且增加了多個從庫(只用于讀,寫還是走主庫Core Database)

現在的架構(具體是哪一年?不清楚):

LinkedIn網站架構設計啟示

特點:

  • 服務層被提出來并分化出多個服務:Profile Service、Comm Service、Groups Service、News Service,并且每個服務都有自己的數據庫(按業務分庫)
  • 服務被抽取出來后有一個好處是可復用性極大增強,這樣也導致依賴于這些服務的Web App的誕生:Public Profile Web App和Recruiter Web App
  • 增加廣告服務


新聞服務架構

LinkedIn網站架構設計啟示

從上面可以看出幾點:

  • 新聞主要來源是網絡爬蟲抓取:分布式爬蟲、解析技術使用StAX和Rom
  • 爬取到的數據經過解析清洗后進入News DB,再由Lucene構建索引,以供News Service檢索


99%代碼都是Java編寫的

LinkedIn組合使用各種Java開源框架,代碼99%都是由Java編寫的,各層用到的Java框架如下:

LinkedIn網站架構設計啟示

可以從上表看出LinkedIn使用都是一些Java界“喜聞樂見”的框架,但組合使用得當一樣可以有效支撐起一個千萬級別的網站架構。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!