本文是閱讀<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界「喜聞樂見」的框架,但組合使用得當同樣能夠有效支撐起一個千萬級別的網站架構。