1)NoSQL (HBase+Redis)

我們之前存儲使用的是MySQL,一般關(guān)系型數(shù)據(jù)庫會做為應(yīng)用系統(tǒng)存儲的首選。大家知道MySQL非商業(yè)版對分布式支持不夠,在存儲數(shù)據(jù)量不高,查詢量和計算復(fù)雜度不是很大的情況下,可以滿足應(yīng)用系統(tǒng)絕大部分的功能需求。
我們現(xiàn)狀是需要安全存儲海量的數(shù)據(jù),高吞吐,并發(fā)能力強,同時隨著數(shù)據(jù)量和請求量的快速增加,能夠通過加節(jié)點來擴容。另外還需要支持故障轉(zhuǎn)移,自動恢復(fù),無需額外的運維成本。綜上幾個主要因素,我們進行了大量的調(diào)研和測試,最終我們選用HBase和Redis兩個NoSQL數(shù)據(jù)庫來取代以往使用的MySQL。我們把用戶意圖以及推薦產(chǎn)品數(shù)據(jù)以KV的形式存儲在HBase中,我對操作HBase進行一些優(yōu)化,其中包括rowkey的設(shè)計,預(yù)分配,數(shù)據(jù)壓縮等,同時針對我們的使用場景對HBase本身配置方面的也進行了調(diào)優(yōu)。目前存儲的數(shù)據(jù)量已經(jīng)達到TB級別,支持每天千萬次請求,同時保證99%在50毫秒內(nèi)返回。