LinkedIn網站架構設計啟示
本文是閱讀
簡介
LinkedIn創建于2003年,擁有(指發布那個PPT時的統計數字):
- 兩千兩百萬注冊會員
- 每月4百萬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界“喜聞樂見”的框架,但組合使用得當一樣可以有效支撐起一個千萬級別的網站架構。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!