十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)cassandra系統(tǒng)包含哪些功能,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
我們注重客戶(hù)提出的每個(gè)要求,我們充分考慮每一個(gè)細(xì)節(jié),我們積極的做好成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),我們努力開(kāi)拓更好的視野,通過(guò)不懈的努力,創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵(lì)著我們更好的服務(wù)客戶(hù)。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),成都小程序開(kāi)發(fā),網(wǎng)站開(kāi)發(fā),技術(shù)開(kāi)發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫(kù)的技術(shù)開(kāi)發(fā)工程師。
cassandra是由facebook開(kāi)發(fā)的一套NOSQL存儲(chǔ)引擎,也是目前最火的NoSQL應(yīng)用之一,cassandra的特性不同的人理解不一樣,歸納起來(lái)有如下幾點(diǎn):
分布式,集群下容錯(cuò)性高,無(wú)限水平擴(kuò)展性schema的靈活控制,隨意增刪字段、支持范圍查詢(xún)。下面創(chuàng)新互聯(lián)小編來(lái)講解下cassandra系統(tǒng)包含哪些功能?
cassandra系統(tǒng)包含哪些功能
1.硬盤(pán)是新的磁帶
“內(nèi)存是新的硬盤(pán),硬盤(pán)是新的磁帶”這是Jim Gray的一句名言。我們目前對(duì)硬盤(pán)(非SSD)的利用,多是隨機(jī)讀取,這時(shí)的硬盤(pán)讀取速度是相當(dāng)慢的,但是如果把硬盤(pán)當(dāng)成磁帶進(jìn)行順序讀取的話,速度是相當(dāng)驚人的。
而cassandra的設(shè)計(jì)恰恰是沖著這一點(diǎn)來(lái)的,他在內(nèi)在中保存一定量的數(shù)據(jù)后再統(tǒng)一寫(xiě)入磁盤(pán),這本身就是一次順序?qū)懭?,在?xiě)入后不再進(jìn)行更改,這樣在進(jìn)行數(shù)據(jù)讀取時(shí),就可以只進(jìn)行一次次的順序讀取即可。大大提高了磁盤(pán)的效率。
如果cassandra不更改數(shù)據(jù),那數(shù)據(jù)的update操作又是如何實(shí)現(xiàn)的呢,cassandra采用的是追加方式,再寫(xiě)一條信息,取的時(shí)候取出對(duì)這個(gè)數(shù)據(jù)的所有操作再根據(jù)時(shí)間順序進(jìn)行案件重演就可以算出最新的數(shù)據(jù)是什么了。
cassandra系統(tǒng)包含哪些功能
2.bloom-filter算法的應(yīng)用
bloom-filter算法簡(jiǎn)單來(lái)說(shuō)就是判斷一個(gè)值是否存在于一個(gè)集合中的算法,用得最多的是在搜索引擎的URL抓取中,如果這個(gè)URL在一段時(shí)間抓取過(guò)的URL列表中,那就不再進(jìn)行抓取。這個(gè)算法的時(shí)間和空間復(fù)雜度都很小,基本每一個(gè)數(shù)據(jù)的判斷只需要做幾次hash就可以了,但是問(wèn)題是有一定的誤差,只要應(yīng)用可接受這個(gè)誤差,那使用bloom-filter算法是最好的。
bloom-filter在cassandra用來(lái)判斷一個(gè)數(shù)據(jù)塊中是否有一個(gè)值的更新,上面說(shuō)到,我們?cè)谧x取數(shù)據(jù)時(shí),是將其更新記錄全部讀取再通過(guò)時(shí)間順序排序得到最新值。而cassandra每次內(nèi)存存儲(chǔ)上限(這個(gè)可以自由設(shè)置,但為了保證效率,通常低于物理內(nèi)存)到時(shí)都會(huì)將內(nèi)在中的數(shù)據(jù)寫(xiě)入硬盤(pán),生成一個(gè)新的文件。于是在數(shù)據(jù)量很大時(shí),會(huì)有很多個(gè)塊生成,我們?nèi)绻袎K都去查找是否有某一個(gè)值的更新記錄,是會(huì)浪費(fèi)時(shí)間降低效率的,于是cassandra用bloom-filter算法來(lái)決定是否對(duì)這個(gè)塊進(jìn)行查找,cassandra中的index.db文件就是存儲(chǔ)bloom-filter算法的hash表的。
我們上面也說(shuō)過(guò),bloom-filter算法會(huì)有一定誤差,但是這個(gè)誤差是可能會(huì)將不在一個(gè)集合中的值誤判為在這個(gè)集合中,而不會(huì)將在這個(gè)集合中的值誤判為不在這個(gè)集合中,有點(diǎn)殺三千不放一個(gè)的意思。這個(gè)誤差在這里是可以忍受的,因?yàn)槲覀兛梢远嗖橐粋€(gè)不存在這個(gè)值的數(shù)據(jù)塊,但是決不會(huì)漏掉任何一個(gè)。
3.基于gossip的多點(diǎn)同步
gossip是一個(gè)p2p協(xié)議的實(shí)現(xiàn),他的原理是向周?chē)墓?jié)點(diǎn)傳遞信息,直到所有節(jié)點(diǎn)都有同樣的信息,這種傳播是病毒式的。通過(guò)這種方式,可以達(dá)到多點(diǎn)同步,并且可以不用關(guān)心具體節(jié)點(diǎn)量實(shí)現(xiàn)無(wú)限水平擴(kuò)展的功能。而且多點(diǎn)分布式系統(tǒng)有很好的容錯(cuò)機(jī)制,集群中的一臺(tái)或N臺(tái)機(jī)器出問(wèn)題,不會(huì)對(duì)整體數(shù)據(jù)服務(wù)的正確性造成影響。而cassandra的錯(cuò)誤偵測(cè)系統(tǒng)也能很快的發(fā)現(xiàn)壞死的結(jié)點(diǎn)以便及時(shí)處理。
上述就是小編為大家分享的cassandra系統(tǒng)包含哪些功能了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。