LinkedIn網站架構設計啓示

本文是閱讀<LinkeddIn: A Professional Social Network Built with JavaTM Technologies and Agile Practices>後的一些總結思考。 數據庫


簡介 服務器

LinkedIn建立於2003年,擁有(指發佈那個PPT時的統計數字): 網絡

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


工做流程 架構

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


總體架構演化 框架

2003年-2005年的架構以下: 分佈式

    

特色: 工具

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

2006年的架構以下: 單元測試

特色: 測試

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

如今的架構(具體是哪一年?不清楚): 網站

特色:

  • 服務層被提出來並分化出多個服務:Profile Service、Comm Service、Groups Service、News Service,而且每一個服務都有本身的數據庫(按業務分庫)
  • 服務被抽取出來後有一個好處是可複用性極大加強,這樣也致使依賴於這些服務的Web App的誕生:Public Profile Web App和Recruiter Web App
  • 增長廣告服務


新聞服務架構


從上面能夠看出幾點:

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


99%代碼都是Java編寫的

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

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

相關文章
相關標籤/搜索