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到內部實現原理,甚至到一些源碼的細節。
轉載自:http://ugc.renren.com/2009/12/13/a-list-of-open-source-software-in-renren/