LinkedIn架構圖:99%都是用Java寫的

著名社交網站LinkedIn的Java架構技術,在JavaOne大會上,LinkIn開發者做了介紹,並有PPT下載,現在有更詳細的架構圖下載,LinkIn開發者透露LinkedIn 99%都是用java寫的,除了緩存通過C++實現。

下面是詳細架構圖:

 


JavaOne 2008的會議上,著名社交網站LinkedIn的開發者做了2個關於LinkedIn

網站的架構技術的演講,目前這兩個演講的PPT已經可以下載了。下載地址如下:

需要註冊纔可以下載,能下載PDF版本。

可以看一下LinkedIn網站的基本情況:

1。2千2百萬用戶
2。每個月4百萬獨立用戶訪問
3。每天4千萬page view
4。每天2百萬搜索流量
5。每天25萬邀請發送
6。每天1百萬的回答提交
7。每天2百萬的email消息發送

這是一個世界頂尖級別流量的網站了,看看LinkedIn的系統架構:

    * 操作系統:Solaris (running on Sun x86 platform and Sparc)
    * 應用服務器:Tomcat and Jetty as application servers
    * 數據庫:Oracle and MySQL as DBs
    * 沒有ORM,直接用JDBC No ORM (such as Hibernate); they use straight JDBC
    * 用ActiveMQ在發送JMS. (It’s partitioned by type of messages. Backed by MySQL.)
    * 用lucene做搜索Lucene as a foundation for search
    * Spring做邏輯架構Spring as glue

下面是隨着流量增加,LinkedIn的架構演化:

2003-2005
1。一個整體的web程序,
2。一個核心數據庫,
3。在Cloud中緩存所有network圖,Cloud是用來做緩存的獨立server。
4。用lucene做搜索,也跑在Cloud中。

2006年
1。複製另外一個數據庫,減少直接load核心數據庫,另外一個server來管理非只讀數據庫的數據更新。
2。把搜索從Cloud中移出來,單獨一個server跑搜索
3。增加Databus數據總線來更新數據,這是通過分佈式更新的核心組件,任何組件都需要Databus

2008年
1。WebApp不再任何事情都它自己做,把業務邏輯分成很多部分,通過server羣來做。WebApp仍然提供用戶界面給用戶,但是,通過server羣來管理用戶資料,小組等等。
2。每個服務有自己的域數據庫
3。新的架構允許其他應用鏈接LinkedIn,比如增加的招聘和廣告業務。

The Cloud
1。Cloud是整個架構最重要的部分,整個LinkedIn的網絡圖都緩存在Cloud裏面
2。Cloud大小:22M nodes, 120M edges
3。需要12GB RAM
4。在生產環境要跑40個實例
5。從硬盤重建Cloud一個實例需要8個小時
6。Cloud通過databus實時更新
7。關閉時持久化到硬盤
8。緩存通過C++實現,用JNI調用,LinkedIn選擇C++而不是Java有兩個原因:
   1)儘可能的減少RAM的使用
   2)垃圾收集暫停會殺死整個系統,LinkedIn用了最新的GC程序,也就是就是說java的的垃圾蒐集性能不太好
9。將所有東西放在緩存裏面是一種限制,但是LinkedIn指出,分割業務圖將更麻煩
10。Sun提供了2TB的RAM


Communication Architecture交流架構包括:

Communication Service

Communication Service是用來提供永久信息的,比如收件箱裏面的消息和email
1。整個系統通過JMS異步通訊
2。客戶端用JMS發送消息
3。消息通過路徑服務器來到達相應的郵箱或者直接放到email進程中
4。消息發送:同時使用Pull主動尋求信息(如用戶需要信息)和Push發送信息(如發email)
5。使用Spring和LinkedIn專業Spring插件完成,使用HTTP-RPC

Scaling Techniques
1。通過功能來劃分:發送,接受,文檔等。
2。通過類別來劃分:用戶信箱,訪問者信箱等
3。等級劃分:用戶ID等級,Email等級等
4。所有的操作都是異步的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章