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

 

作者:人人網架構師 張潔 人人網UGC團隊博客首發

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到內部實現原理,甚至到一些源碼的細節。

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