[轉貼] 著名社交網站LinkedIn的Java架構技術
在JavaOne 2008的會議上,著名社交網站LinkedIn的開發者做了2個關於LinkedIn網站的架構技術的演講,目前這兩個演講的PPT已經可以下載了。下載地址如下:
需要註冊才可以下載,能下載PDF版本。
LinkIn開發者透露LinkedIn 99%都是用java寫的,除了快取通過C++實現。
下面是詳細架構圖:
可以看一下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、所有的操作都是非同步的。
轉自 http://www.wokaoo.com/2008/06/%E8%91%97%E5%90%8D%E7%A4%BE%E4%BA%A4%E7%BD%91%E7%AB%99lin