說起Cassandra的用途時,我們可以將其理解為一套理想的客戶系統(tǒng)實(shí)現(xiàn)方案——其能夠保證各類應(yīng)用始終可用,包括產(chǎn)品目錄、物聯(lián)網(wǎng)、醫(yī)療系統(tǒng)以及移動應(yīng)用。Cassandra于2010年成為Apache軟件基金會的頂級項(xiàng)目,而且至今仍擁有極高人氣。Cassandra專業(yè)知識能夠幫助我們在人才市場上獲得賞識。我們不禁要問——為什么這一開源項(xiàng)目能夠大受歡迎?
隨著現(xiàn)代云應(yīng)用對正常運(yùn)行時間及性能水平的要求逐步提高,已經(jīng)有越來越多用戶開始將注意力集中在Apache Cassandra數(shù)據(jù)庫身上。
那么,為什么要選擇Apache Cassandra?這套分布式OLTP數(shù)據(jù)庫能夠帶來高可用性與線性可擴(kuò)展能力。在說起Cassandra的用途時,我們可以將其理解為一套理想的客戶系統(tǒng)實(shí)現(xiàn)方案——其能夠保證各類應(yīng)用始終可用,包括產(chǎn)品目錄、物聯(lián)網(wǎng)、醫(yī)療系統(tǒng)以及移動應(yīng)用。這類項(xiàng)目一旦遭遇停機(jī),企業(yè)可能面臨嚴(yán)重的營收損失甚至失去忠誠的用戶。Netflix公司早在2008年就開始使用這套開源數(shù)據(jù)庫,而其做出的大力推動也真正讓Cassandra引起了公眾的重視。
Cassandra于2010年成為Apache軟件基金會的頂級項(xiàng)目,而且至今仍擁有極高人氣。Cassandra專業(yè)知識能夠幫助我們在人才市場上獲得賞識。我們不禁要問——為什么這一開源項(xiàng)目能夠大受歡迎?
Cassandra能夠利用Amazon發(fā)布的Dynamo論文中所提到的獨(dú)特設(shè)計成果,從而保證硬件與網(wǎng)絡(luò)出現(xiàn)大規(guī)模故障時繼續(xù)保證可用性。利用點(diǎn)對點(diǎn)模型,其消除了單點(diǎn)故障可能性,從而幫助我們在機(jī)架故障甚至是網(wǎng)絡(luò)整體下線的情況下得以幸存。我們能夠在無需影響用戶體驗(yàn)的情況下,順利處理整體數(shù)據(jù)中心故障。只有能夠應(yīng)對故障的分布式系統(tǒng)才是一套擁有出色設(shè)計水平的分布式系統(tǒng),而在Cassandra的幫助下,我們能夠承受各類意外狀況,并將應(yīng)對機(jī)制納入數(shù)據(jù)庫架構(gòu)及功能當(dāng)中。
但大家可能要問,“不過,我之前只使用過關(guān)系型數(shù)據(jù)庫,過渡過程是否非常艱難?”這個問題無法一概而論。Cassandra使用的數(shù)據(jù)模型對于關(guān)系數(shù)據(jù)庫管理員來說并不陌生,我們同樣使用表進(jìn)行數(shù)據(jù)建模,并通過CQL——Cassandra查詢語言——查詢數(shù)據(jù)庫。不過與SQL不同,Cassandra支持更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如嵌套與用戶定義類型。例如,相較于為某張圖片創(chuàng)建獨(dú)立的存儲表,我們可以直接將該數(shù)據(jù)存儲在集合中以實(shí)現(xiàn)更為快速的查詢速度。這種作法在CQL當(dāng)中非常自然,而對應(yīng)的圖片表中則包含其名稱、URL以及喜愛該圖片的用戶信息。
在高性能系統(tǒng)當(dāng)中,毫秒級別的差異可能決定用戶的實(shí)際體驗(yàn)與去留。然而,資源成本高昂的JOIN操作限制了我們的向外擴(kuò)展通徹。通過對數(shù)據(jù)進(jìn)行非規(guī)范化處理,我們能夠盡可能降低請求數(shù)量,從而大幅降低磁盤空間成本并實(shí)現(xiàn)可預(yù)測的高性能應(yīng)用。
當(dāng)然,我們能夠存儲的絕不僅僅是圖片數(shù)據(jù)。Cassandra針對高寫入吞吐量進(jìn)行了優(yōu)化,這意味著其能夠完美地處理大數(shù)據(jù)應(yīng)用。時間序列與物聯(lián)網(wǎng)用例的快速增長要求我們不斷尋求新的方法以收集數(shù)據(jù)并改進(jìn)數(shù)據(jù)的應(yīng)用技術(shù)。
這就帶來了新的問題:我們已經(jīng)能夠以現(xiàn)代化且具備成本效益的方式存儲數(shù)據(jù),但如何進(jìn)一步提升處理能力?換言之,在數(shù)據(jù)收集完成后,我們該如何加以運(yùn)用?我們?nèi)绾斡行Х治鰯?shù)百TB數(shù)據(jù)?我們又該如何以秒為單位實(shí)時利用信息進(jìn)行決策?Apache Spark正是問題的答案。
Spark可謂大數(shù)據(jù)處理的下一場革命。Hadoop與Mapreduce屬于第一代革命性項(xiàng)目,它們讓我們得以立足于大數(shù)據(jù)層面實(shí)現(xiàn)數(shù)據(jù)收集。而Spark則能夠大幅提高性能并降低代碼計算的復(fù)雜性,從而實(shí)現(xiàn)前所未有的數(shù)據(jù)分析能力。在Spark的幫助下,我們可以完成大量批處理計算,針對數(shù)據(jù)流處理結(jié)果進(jìn)行反應(yīng)并通過機(jī)器學(xué)習(xí)機(jī)制做出明智決策,最終利用遍歷與遞歸理解復(fù)雜的信息。其目標(biāo)不光是為客戶提供更為快速可靠的應(yīng)用連接能力(這部分效果由Cassandra負(fù)責(zé)實(shí)現(xiàn)),同時也需要利用信息做出業(yè)務(wù)決策地更好地滿足客戶需求。
大家可以點(diǎn)擊此處查閱 Spark-Cassandra Connector方案說明 (開源),我們也強(qiáng)烈建議各位在DataStax Academy上查找免費(fèi)的自學(xué)教程。