開(kāi)源Apache Cassandra、Kafka、Spark和ES何時(shí)該用,何時(shí)不該用?
譯文【51CTO.com快譯】幾乎所有技術(shù)決策都要滿(mǎn)足兩個(gè)基本標(biāo)準(zhǔn):讓企業(yè)能夠?qū)崿F(xiàn)業(yè)務(wù)目標(biāo),與技術(shù)架構(gòu)的其余部分協(xié)同運(yùn)行。說(shuō)到選擇構(gòu)建應(yīng)用程序架構(gòu)的數(shù)據(jù)層技術(shù),開(kāi)源Apache Cassandra、Apache Kafka、Apache Spark和Elasticsearch繼續(xù)大行其道。
然而它們并不是適合各種使用場(chǎng)合的正確選擇。
不妨更深入地研究這每一項(xiàng)技術(shù)以及適合和不適合這些開(kāi)源解決方案的一些使用場(chǎng)合。
1.Apache Cassandra
Cassandra最初由Facebook于2007年創(chuàng)建,利用Dynamo架構(gòu)和Bigtable樣式的數(shù)據(jù)模型來(lái)提供NoSQL數(shù)據(jù)存儲(chǔ),從而提供高可用性和高擴(kuò)展性。
•何時(shí)應(yīng)該使用Apache Cassandra?
對(duì)于需要最高級(jí)的始終在線(xiàn)可用性的使用場(chǎng)合而言,Cassandra是理想的選擇。該數(shù)據(jù)庫(kù)還特別適合服務(wù)于這類(lèi)企業(yè):預(yù)計(jì)會(huì)有大量工作負(fù)載,或希望確保其服務(wù)可以隨工作負(fù)載加大而靈活增加,Cassandra提供了易于擴(kuò)展的優(yōu)點(diǎn)。Cassandra在多個(gè)數(shù)據(jù)中心之間提供可靠的數(shù)據(jù)冗余和雙活操作。
•何時(shí)不應(yīng)該使用?
面對(duì)數(shù)據(jù)倉(cāng)庫(kù)或純粹的分析存儲(chǔ)(甚至考慮使用可用的Spark連接件以及Tableau和Hadoop插件)時(shí),Cassandra消耗的資源比替代技術(shù)更多。Cassandra還不適合實(shí)時(shí)分析,尤其是最終用戶(hù)臨時(shí)查詢(xún)或自定義查詢(xún)這種形式的分析,因?yàn)閼?yīng)用程序端實(shí)現(xiàn)代碼的需要可能變得很復(fù)雜。此外,Cassandra無(wú)法滿(mǎn)足大多數(shù)ACID要求。
2.Apache Kafka
Apache Kafka最開(kāi)始由LinkedIn的技術(shù)團(tuán)隊(duì)創(chuàng)建,它提供了一種高可擴(kuò)展性高可用性的流平臺(tái)和消息總線(xiàn)。Kafka充當(dāng)分布式日志,新到達(dá)的消息被添加到隊(duì)列的頭部,讀取者(使用者)將根據(jù)偏移量來(lái)使用它們。
•何時(shí)應(yīng)該使用Apache Kafka?
對(duì)于涉及微服務(wù)和面向服務(wù)架構(gòu)的使用場(chǎng)合而言,Apache Kafka通常是明智的選擇。 Kafka還可以充當(dāng)高效的工作隊(duì)列,能夠協(xié)調(diào)不同的工作路徑,通過(guò)監(jiān)聽(tīng)和等待、直到工作到達(dá)來(lái)保留計(jì)算能力。該平臺(tái)的流處理功能適用于異常檢測(cè)、向上鉆取和聚合,還適用于傳遞度量指標(biāo)。Kafka還是一種功能強(qiáng)大的技術(shù),可用于事件源、跨各種微服務(wù)的數(shù)據(jù)協(xié)調(diào)以及為分布式系統(tǒng)提供外部提交日志。其他合適的使用場(chǎng)合包括日志聚合、數(shù)據(jù)屏蔽及過(guò)濾、數(shù)據(jù)豐富和欺詐檢測(cè)。
•何時(shí)不應(yīng)該使用?
雖然在一些情況下可能很誘人,但切勿將Kafka用作數(shù)據(jù)庫(kù)或記錄源,至少在沒(méi)有充分了解Kafka在這種使用場(chǎng)合下的局限性和屬性的情況下切勿這么做。真正的數(shù)據(jù)庫(kù)幾乎總是更易于操作且更靈活。對(duì)于涉及整個(gè)主題的順序處理,Kafka是同樣不適合的選擇。在目標(biāo)是將數(shù)據(jù)包快速推送到終端源的任何使用場(chǎng)合下,比如實(shí)時(shí)音頻和視頻或其他有損數(shù)據(jù)流,企業(yè)應(yīng)使用定制的解決方案而不是Kafka。
3.Apache Spark
Apache Spark是一種通用集群計(jì)算框架,適用于涉及大量數(shù)據(jù)的使用場(chǎng)合,它對(duì)數(shù)據(jù)進(jìn)行劃分,并針對(duì)劃分的數(shù)據(jù)執(zhí)行計(jì)算,以便worker執(zhí)行所有可能的工作,直至它們需要來(lái)自其他worker的數(shù)據(jù)。這種設(shè)計(jì)為Spark提供了巨大的可擴(kuò)展性和可用性,同時(shí)讓它極具彈性,可應(yīng)對(duì)數(shù)據(jù)丟失。
•何時(shí)應(yīng)該使用Apache Spark?
Spark適用于涉及大規(guī)模分析的使用場(chǎng)合,尤其是數(shù)據(jù)通過(guò)多個(gè)來(lái)源到達(dá)的情況。Spark是一種強(qiáng)大的解決方案,適用于ETL或任何這種使用場(chǎng)合:需要在系統(tǒng)之間移動(dòng)數(shù)據(jù),無(wú)論用于從事務(wù)型數(shù)據(jù)存儲(chǔ)持續(xù)填充數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)湖,還是諸如數(shù)據(jù)庫(kù)或系統(tǒng)遷移之類(lèi)的一次性場(chǎng)景。如果企業(yè)在現(xiàn)有數(shù)據(jù)上構(gòu)建機(jī)器學(xué)習(xí)管道、處理高延遲數(shù)據(jù)流,或執(zhí)行交互式分析、臨時(shí)性分析或探索性分析,會(huì)發(fā)現(xiàn)Spark非常適合。Spark還從合規(guī)角度提供數(shù)據(jù)屏蔽、數(shù)據(jù)過(guò)濾和大型數(shù)據(jù)集審核等功能,適合幫助企業(yè)滿(mǎn)足合規(guī)要求。
•何時(shí)不應(yīng)該使用?
對(duì)于涉及實(shí)時(shí)或低延遲處理的使用場(chǎng)合,Spark通常不是最佳選擇。(Apache Kafka或其他技術(shù)提供出色的端到端延遲以滿(mǎn)足這些要求,包括實(shí)時(shí)流處理)。處理小型數(shù)據(jù)集或單個(gè)數(shù)據(jù)集時(shí),Spark通常是一種大材小用的選擇。另外說(shuō)到數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖,最好使用高級(jí)技術(shù)代替Apache Spark,不過(guò)確實(shí)存在面向Spark的此類(lèi)產(chǎn)品。
4.Elasticsearch
Elasticsearch提供了一種全文搜索引擎,它有廣泛的功能來(lái)搜索和分析非結(jié)構(gòu)化數(shù)據(jù)。該技術(shù)提供接近實(shí)時(shí)的可擴(kuò)展線(xiàn)性搜索、強(qiáng)大的搜索臨時(shí)替代和強(qiáng)大的分析功能。
•何時(shí)應(yīng)該使用Elasticsearch?
Elasticsearch非常適合需要全文搜索、地理搜索、抓取和匯總公共數(shù)據(jù)、日志記錄及日志分析、可視化以及少量事件數(shù)據(jù)和度量指標(biāo)的使用場(chǎng)合。
•何時(shí)不應(yīng)該使用?
Elasticsearch不應(yīng)該用作擁有關(guān)系數(shù)據(jù)的數(shù)據(jù)庫(kù)或記錄源,也不應(yīng)該用來(lái)滿(mǎn)足ACID要求。
選擇互補(bǔ)技術(shù)
為貴企業(yè)(無(wú)論是不是開(kāi)源)選擇最佳技術(shù)組合顯然不僅需要評(píng)估解決方案本身,決策者還要設(shè)想企業(yè)將如何采用和使用每種解決方案作為技術(shù)架構(gòu)的一部分。Apache Cassandra、Apache Kafka、Apache Spark和Elasticsearch提供了一套特別互補(bǔ)的技術(shù),企業(yè)結(jié)合使用它們顯得很明智;又由于開(kāi)源特性,它們無(wú)需許可費(fèi),也不存在供應(yīng)商鎖定現(xiàn)象。如果結(jié)合這些技術(shù),并獲得它們帶來(lái)的優(yōu)點(diǎn),企業(yè)就可以實(shí)現(xiàn)目標(biāo),能夠開(kāi)發(fā)出高可擴(kuò)展性、高可用性、易于移植、極具彈性的應(yīng)用程序。
原文標(biāo)題:When – and When Not – to Use Open Source Apache Cassandra, Kafka, Spark and Elasticsearch,作者:Ben Slater
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】