1. 程式人生 > >人人網使用的開源軟體列表

人人網使用的開源軟體列表

MySQL
關係型資料庫儲存系統,我們的DBA團隊很強大,每人管理上百臺MySQL伺服器,其他就不多說了,網上資料太多了

Tokyo Cabinet
一個key-value的儲存引擎,日本人開發,國內很多公司也開始使用,我們內部很多地方也用它來代替MySQL來做儲存,比如我們的搜尋結果頁的使用者資料,就是用它來做一層MySQL外的冗餘儲存,目的是加快搜索結果頁的顯示。在key-value並需要持久儲存的場景下,用它比MySQL更有效,Cabinet本身只是一個儲存引擎,沒有網路處理能力,你可以用它作為自己的某個系統的下層儲存引擎,更好的是搭配Tokyo Tyrant使用。

Tokyo Tyrant


一個支援Memcached傳輸協議的網路介面,由Tokyo Cabinet的作者開發,目的是為Tokyo Cabinet提供網路接入能力,即Tokyo Tyrant處理網路連線,協議解析,然後呼叫Tokyo Cabinet的API來完成持久化儲存。

ICE
一個跨語言的網路通訊框架,框架本身提供了強大的通訊能力,管理工具,負載均衡方案,其跨語言能力也是一個很大的亮點,基於這個框架之上,我們選用合適的 語言來提供合適的服務,比如我們使用C++來開發Cache服務,使用Java來開發一些邏輯服務。框架本身可以很重,也可以很輕,具體要看你怎麼用。

Memcached
一個純記憶體的key-value的cache系統,高效、穩定,使用廣泛,如果你連它都沒聽說過就太out啦,memcached本身不具備分散式能力, 需要依靠Client來實現分佈,這裡強調一點的是,你應該選擇一致性Hash來做key的分佈。各種語言的client都有,我們使用 spymemcached作為java的Client,spymemcached是一個非同步的NIO的memcached client,對網路IO的處理非常的精巧,也更加高效,同時因為提供非同步操作方式,可以讓你對Memcached的操作有更好的控制能 力,Memcached到1.4.0版本之後,開始支援binary protocol,spymemcached對其也支援的比較好,使用binary protocol可以提高對協議的解析效率和網路IO的讀寫效率。
上面說到我們使用ICE自己開發了Cache服務,為什麼我們還要用Memcached呢?主要在對Cache的操作粒度不一樣,Memcached對 Cache物件以binary byte作為一個整體來操作,需要頻繁的序列化和反序列化,我們使用ICE提供的Cache服務,可以以Cache物件的一個或者多個欄位來操作,比如一 個使用者物件,我們可以只更新它的姓名,而Memcached

Nginx
高效、穩定的Web Server,我們利用其代理能力,做跨IDC的請求代理,同時也將其和我們的Resin(Java Web 容器)搭配,放在Resin的前面來解決Resin的對網路連線處理能力弱的問題,在一些小地方也用它來做7層的負載均衡

Resin
一個Java Web Server,比Tomcat更高效,是我們主要的Java Web容器

Squid
代理伺服器,我們用他來做圖片檔案的反向代理快取

LVS
能提供4層的負載均衡,高效、高可用,高併發。我們用他替代了很多硬體的負載均衡裝置

Struts
Java web框架,不過這個已經是歷史了,我們開發了一套自己的Web框架替代了它,未來我們也會把我們的內部的這套Web框架開源出來

Lucence
基於Java的搜尋引擎框架,用它我們構建了一個搜尋叢集來提供搜人的服務

Netty
一個Java的網路框架,和apache的mina類似,但比mina更高效,我們用來做一些小的服務

Ganglia
一個監控系統,幫組我們瞭解我們每臺Server的資源利用情況

還有些小東西就不列出來了,最後要說的一點就是,對這些開源軟體或者系統,我們都非常的瞭解,或者說知根知底,從API到內部實現原理,甚至到一些原始碼的細節。