溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Ignite和Hazelcast有哪些區(qū)別

發(fā)布時間:2021-12-16 16:16:08 來源:億速云 閱讀:703 作者:iii 欄目:云計算

本篇內(nèi)容介紹了“Ignite和Hazelcast有哪些區(qū)別”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1.Ignite簡介

Apache Ignite 內(nèi)存數(shù)據(jù)組織框架是一個高性能、集成化和分布式的內(nèi)存計算和事務(wù)平臺,用于大規(guī)模的數(shù)據(jù)集處理,比傳統(tǒng)的基于磁盤或閃存的技術(shù)具有更高的性能,同時他還為應(yīng)用和不同的數(shù)據(jù)源之間提供高性能、分布式內(nèi)存中數(shù)據(jù)組織管理的功能。

2.Ignite歷史

Ignite來源于尼基塔·伊萬諾夫于2007年創(chuàng)建的GridGain系統(tǒng)公司開發(fā)的GridGain軟件,尼基塔領(lǐng)導(dǎo)公司開發(fā)了領(lǐng)先的分布式內(nèi)存片內(nèi)數(shù)據(jù)處理技術(shù)-領(lǐng)先的Java內(nèi)存片內(nèi)計算平臺,今天在全世界每10秒它就會啟動運(yùn)行一次。他有超過20年的軟件應(yīng)用開發(fā)經(jīng)驗,創(chuàng)建了HPC和中間件平臺,并在一些創(chuàng)業(yè)公司和知名企業(yè)都做出過貢獻(xiàn),包括Adaptec, Visa和BEA Systems。尼基塔也是使用Java技術(shù)作為服務(wù)器端開發(fā)應(yīng)用的先驅(qū)者,1996年他在為歐洲大型系統(tǒng)做集成工作時他就進(jìn)行了相關(guān)實踐。
2014年3月,GridGain公司將該軟件90%以上的功能和代碼開源,僅在商業(yè)版中保留了高端企業(yè)級功能,如安全性,數(shù)據(jù)中心復(fù)制,先進(jìn)的管理和監(jiān)控等。2015年1月,GridGain通過Apache 2.0許可進(jìn)入Apache的孵化器進(jìn)行孵化,很快就于8月25日畢業(yè)并且成為Apache的頂級項目,9月28日即發(fā)布了1.4.0版,2016年1月初發(fā)布了1.5.0版,應(yīng)該說發(fā)展、迭代速度非常快。該技術(shù)相關(guān)資料較少,但確是一個很有潛力的技術(shù),解決了大規(guī)模、大數(shù)據(jù)量、高并發(fā)企業(yè)級或者互聯(lián)網(wǎng)應(yīng)用面臨的若干痛點(diǎn)。

3.Ignite和Hadoop以及Spark的關(guān)系

Ignite和Hadoop解決的是不同的問題,即使在一定程度上可能應(yīng)用了類似的底層基礎(chǔ)技術(shù)。Ignite是一種多用途,和OLAP/ OLTP內(nèi)存中數(shù)據(jù)結(jié)構(gòu)相關(guān)的,而Hadoop僅僅是Ignite原生支持(和加速)的諸多數(shù)據(jù)來源之一。
Spark是一個和Ignite類似的項目。但是Spark聚焦于OLAP,而Ignite憑借強(qiáng)大的事務(wù)處理能力在混合型的OLTP/ OLAP場景中表現(xiàn)更好。特別是針對Hadoop,Ignite將為現(xiàn)有的Map/Reduce,Pig或Hive作業(yè)提供即插即用式的加速,避免了推倒重來的做法,而Spark需要先做數(shù)據(jù)ETL,更適合新寫的分析應(yīng)用。

4.和類似技術(shù)的比較

在Ignite以前,大規(guī)模、大數(shù)據(jù)量、高并發(fā)企業(yè)級或者互聯(lián)網(wǎng)應(yīng)用為了解決數(shù)據(jù)緩存、降低數(shù)據(jù)庫負(fù)載、提高查詢性能等突出問題,很多采用了Hazelcast或者Oracle Coherence或者GemFire(比如12306網(wǎng)站)或者目前應(yīng)用越來越廣泛的Redis等緩存技術(shù),本文對這些相關(guān)的技術(shù)做了簡單的比較,基本內(nèi)容來源于其官方網(wǎng)站,進(jìn)行了翻譯整理,方便更多的人了解他。

4.1.Ignite和Hazelcast

Apache Ignite和Hazelcast都提供了富數(shù)據(jù)網(wǎng)格的特性,解決了可擴(kuò)展的分布式集群環(huán)境下在內(nèi)存中對數(shù)據(jù)進(jìn)行緩存和分區(qū)的問題。
Ignite和Hazelcast在緩存的方式上是有很多不同的,同時支持事務(wù)和數(shù)據(jù)的查詢,下面的表格列出了一些主要的不同點(diǎn),這些都是我們在選擇內(nèi)存數(shù)據(jù)網(wǎng)格產(chǎn)品時需要特別關(guān)注的。

序號對比項目Apache igniteHazelcast
1聚焦于開源Ignite還在不斷增加和增強(qiáng)開源版本的功能集,最新的主版本還增加了對C++以及.Net/C#的支持,和Node.js的集成也會很快到來,而且還增加了更快的無死鎖事務(wù)。Hazelcast的開發(fā)聚焦于收費(fèi)的企業(yè)版中,比如堆外存儲以及持續(xù)查詢等的特性只在收費(fèi)版中才提供,SSL加密的功能已經(jīng)從開源版中刪除,只在收費(fèi)版中提供。
2JCache(JSR107)Ignite完全兼容JCache (JSR 107)緩存規(guī)范Hazelcast完全兼容JCache (JSR 107)緩存規(guī)范
3堆外存儲Ignite根據(jù)用戶配置支持將數(shù)據(jù)存儲在堆內(nèi)或者堆外Hazelcast僅在商業(yè)版中提供堆外存儲的功能
4堆外索引只要配置了堆外存儲,Ignite就會在堆外存儲索引(為了不影響使用堆內(nèi)內(nèi)存的用戶應(yīng)用。)不支持
5持續(xù)查詢Ignite支持容錯的持續(xù)查詢,即允許客戶端和服務(wù)器端訂閱數(shù)據(jù)變化的持續(xù)通知Hazelcast僅在商業(yè)(收費(fèi))版中提供持續(xù)查詢的功能。
6SSL加密Ignite支持SSL/TLS加密,即允許所有的客戶端和服務(wù)端通過加密的SSL或者TLS協(xié)議進(jìn)行通信。Hazelcast將SSL加密支持從開源版中刪除,目前僅在商業(yè)(收費(fèi))版中支持該功能。
7SQL查詢Ignite支持完整的SQL(ANSI-99)語法以查詢內(nèi)存中的數(shù)據(jù)Hazelcast僅對SQL提供有限的支持(只有幾個關(guān)鍵字)
8關(guān)聯(lián)查詢Ignite支持完整的SQL關(guān)聯(lián),包括跨多個緩存的關(guān)聯(lián),比如:select * from A a, B b where a.b_id = b.idHazelcast不支持任何的關(guān)聯(lián)查詢,不管用不用SQL,如果需要,開發(fā)者需要手工處理多個查詢的結(jié)果。
9查詢一致性Ignite提供完整的查詢一致性,即查詢是在一個特定的快照中執(zhí)行的,查詢開始之后的數(shù)據(jù)更新不影響查詢的結(jié)果。Hazelcast查詢是不一致的,可能查詢結(jié)果的一部分將看到某些更新,而另一部分則不會。
10查詢?nèi)蒎eIgnite查詢是容錯的,即查詢結(jié)果始終是一致的不會受到集群拓?fù)浒l(fā)生變化的影響,比如節(jié)點(diǎn)的加入,退出或崩潰。Hazelcast查詢是不容錯的,即查詢結(jié)果在集群拓?fù)浒l(fā)生變化時不一致,而數(shù)據(jù)正在后臺重新平衡。
11數(shù)據(jù)一致性Ignite支持內(nèi)存中數(shù)據(jù)的原子的和事務(wù)的一致性,不管數(shù)據(jù)存儲在分區(qū)或者復(fù)制緩存中。Hazelcast僅在分區(qū)緩存中支持原子的和事務(wù)的一致性,而存儲在復(fù)制緩存中的數(shù)據(jù)沒有任何事務(wù)一致性的保證。
12無死鎖事務(wù)Ignite支持無死鎖樂觀事務(wù),他不會獲得任何鎖,用戶也不用再擔(dān)心鎖順序,這樣的事務(wù)同時還提供了更好的性能。Hazelcast中必須注意按順序地更新數(shù)據(jù)以避免死鎖,這往往是不可能的,尤其是在大項目中。
13事務(wù)化EntryProcessorIgnite支持事務(wù)化EntryProcessor,他可以在服務(wù)端在一個事務(wù)中執(zhí)行并置的業(yè)務(wù)代碼。在Hazelcast中無法使用EntryProcessor或者在一個事務(wù)中執(zhí)行業(yè)務(wù)代碼。
14Web會話集群化Ignite為所有已知的應(yīng)用服務(wù)器提供Web會話的緩存和集群化支持。Hazelcast僅在商業(yè)(收費(fèi))版中提供Web會話集群化支持。
15計算網(wǎng)格Ignite提供集群內(nèi)的MapReduce、ForkJoin和基本的分布式lambda處理,包括作業(yè)的負(fù)載平衡,容錯,檢查點(diǎn),計劃任務(wù)等。Hazelcast僅支持MapReduce和集群內(nèi)的分布式隨機(jī)作業(yè)。
16流式數(shù)據(jù)Ignite支持內(nèi)存內(nèi)的流處理,包括對流式數(shù)據(jù)的滑動窗口的查詢和維護(hù)支持。Hazelcast不對流處理提供任何的支持。
17服務(wù)網(wǎng)格Ignite可以使用戶方便地將其服務(wù)集群化,包括支持各種集群單例。Hazelcast管理的服務(wù)不提供單例集群的功能。
18.Net/C#支持Ignite為.NET/C#用戶提供了完整的內(nèi)存組織API,包括執(zhí)行C#閉包,C#緩存,事務(wù)以及查詢API,原生C# CacheStore API等功能。Hazelcast只為.NET/C#提供了有限的客戶端API。
19C++支持Ignite為C++用戶提供了完整的內(nèi)存組織API。Hazelcast只為C++提供了有限的客戶端API。
20Node.js支持Ignite將為Node.js用戶提供客戶端API支持。Hazelcast不支持Node.js。

4.2.Ignite和Coherence

Apache Ignite和Oracle Coherence都提供了富數(shù)據(jù)網(wǎng)格的特性,解決了可擴(kuò)展的分布式集群環(huán)境下在內(nèi)存中對數(shù)據(jù)進(jìn)行緩存和分區(qū)的問題。
Ignite和Coherence在緩存和事務(wù)的方式上是有很多不同的,同時支持?jǐn)?shù)據(jù)的查詢,下面的表格列出了一些主要的不同點(diǎn),這些都是我們在選擇數(shù)據(jù)網(wǎng)格產(chǎn)品時需要特別關(guān)注的。

序號對比項目Apache IgniteOracle Coherence
1開源和閉源Ignite是一個Apache項目,并且還在不斷的增加和增強(qiáng)開源版的功能集,最新的主版本提供了對C++、.NET/C#的支持,對Node.js的支持也會很快到來。Coherence是一個Oracle的專有軟件,并不提供開源和免費(fèi)的版本。
2JCache (JSR 107)Ignite完全兼容JCache (JSR 107)緩存規(guī)范Coherence完全兼容JCache (JSR 107)緩存規(guī)范
3堆外存儲Ignite根據(jù)用戶配置支持將數(shù)據(jù)存儲在堆內(nèi)或者堆外Oracle Coherence對將數(shù)據(jù)存儲在堆外向開發(fā)者提供了有限的選項。
4堆外索引只要配置了堆外存儲,Ignite就會在堆外存儲索引(為了不影響使用堆內(nèi)內(nèi)存的用戶應(yīng)用。)不支持
5SQL查詢Ignite支持完整的SQL(ANSI-99)語法以查詢查詢內(nèi)存中的數(shù)據(jù)不支持
6關(guān)聯(lián)查詢Ignite支持完整的SQL關(guān)聯(lián),包括跨多個緩存的關(guān)聯(lián),比如:select * from A a, B b where a.b_id = b.idCoherence不支持任何的關(guān)聯(lián)查詢,不管用不用SQL,如果需要,開發(fā)者需要手工處理多個查詢的結(jié)果。
7ACID事務(wù)Ignite提供了每臺服務(wù)器每秒成千上萬事務(wù)的優(yōu)異性能。Coherence因為性能低不建議使用事務(wù)。
8分層存儲Ignite支持分層存儲模型,數(shù)據(jù)可以在堆內(nèi)、堆外以及交換空間內(nèi)存儲和移動,上層將提供更多的存儲能力,當(dāng)然延遲也會增加。不支持
9流式數(shù)據(jù)Ignite提供內(nèi)存內(nèi)流計算,包括支持流式數(shù)據(jù)的滑動窗口的維護(hù)和查詢不支持
10配置Ignite支持通過Java Bean以及原生的Spring XML集成對系統(tǒng)進(jìn)行配置,同時也支持通過代碼對系統(tǒng)進(jìn)行方便配置的能力。Coherence通過專有的XML格式文件進(jìn)行配置,不支持通過代碼進(jìn)行配置。

4.3.Ignite和Gemfire

Apache Ignite和Pivotal Gemfire都提供了富數(shù)據(jù)網(wǎng)格的特性,解決了可擴(kuò)展的分布式集群環(huán)境下在內(nèi)存中對數(shù)據(jù)進(jìn)行緩存和分區(qū)的問題。
Ignite和Gemfire在緩存和事務(wù)的方式上是有很多不同的,同時支持?jǐn)?shù)據(jù)的查詢,下面的表格列出了一些主要的不同點(diǎn),這些都是我們在選擇數(shù)據(jù)網(wǎng)格產(chǎn)品時需要特別關(guān)注的。

序號對比項目Apache IgnitePivotal Gemfire
1開源和閉源Ignite是一個Apache項目,并且還在不斷的增加和增強(qiáng)開源版的功能集,最新的主版本提供了對C++、.NET/C#的支持,對Node.js的支持也會很快到來。Gemfire是Pivotal的專有軟件。
2JCache (JSR107)Ignite數(shù)據(jù)網(wǎng)格是JCache(JSR107)規(guī)范的一個實現(xiàn),該API為數(shù)據(jù)訪問提供了簡單易用、但是功能強(qiáng)大的API。Gemfire沒有實現(xiàn)JCache,使用專有的API。
3堆內(nèi)和堆外Ignite根據(jù)用戶配置支持將數(shù)據(jù)存儲在堆內(nèi)和堆外。Gemfire不支持將數(shù)據(jù)存儲在堆外
4SQL查詢Ignite支持完整的SQL(ANSI-99) 查詢語法以查詢內(nèi)存中的數(shù)據(jù)。Gemfire不支持標(biāo)準(zhǔn)的SQL語法,但是他提供了自己的叫做OQL的對象查詢語言。
5關(guān)聯(lián)查詢Ignite支持完整的SQL關(guān)聯(lián),包括跨多個緩存的關(guān)聯(lián),比如:select * from A a, B b where a.b_id = b.idGemfire不支持任何的跨區(qū)或者跨緩存的關(guān)聯(lián)查詢,如果需要,開發(fā)者需要手工處理多個查詢的結(jié)果。
6跨分區(qū)事務(wù)Ignite支持跨分區(qū)事務(wù),事務(wù)可以在整個集群中緩存的所有分區(qū)中執(zhí)行。Gemfire不支持跨越多個緩存分區(qū)或者節(jié)點(diǎn)的事務(wù)。
7分層存儲Ignite支持分層存儲模型,數(shù)據(jù)可以在堆內(nèi)堆外以及交換空間內(nèi)存儲和移動,上層將提供更多的存儲能力,當(dāng)然延遲也會增加。不支持
8流式數(shù)據(jù)Ignite提供內(nèi)存內(nèi)流計算,包括支持流式數(shù)據(jù)的滑動窗口的維護(hù)和查詢不支持
9配置Ignite支持通過Java Bean以及原生的Spring XML集成對系統(tǒng)進(jìn)行配置,同時也支持通過代碼對系統(tǒng)進(jìn)行方便配置的能力。Gemfire通過專有的XML格式文件進(jìn)行配置,不支持通過代碼進(jìn)行配置。
10部署Ignite節(jié)點(diǎn)是對等的,并且在啟動時自動加入集群(不需要任何locator服務(wù)器)。Gemfire需要啟動和維護(hù)一個locator服務(wù)器,以便控制節(jié)點(diǎn)的加入和退出。

4.4.Ignite和Redis

Apache Ignite和Redis都提供了分布式緩存的功能,但是每個產(chǎn)品提供的功能特性是非常不同的。Redis主要是一個數(shù)據(jù)結(jié)構(gòu)存儲,但是Ignite提供了很多內(nèi)存內(nèi)的分布式組件,包括數(shù)據(jù)網(wǎng)格、計算網(wǎng)格、流計算,當(dāng)然也包括數(shù)據(jù)結(jié)構(gòu)。
Ignite是一個內(nèi)存數(shù)據(jù)組織,并且提供了更多的功能,無法進(jìn)行一個一個對應(yīng)功能特性的比較,但是我們?nèi)匀荒軐σ恍?shù)據(jù)網(wǎng)格功能進(jìn)行對比。

序號對比項目Apache IgniteRedis
1JCache (JSR 107)Ignite完全兼容JCache(JSR107)緩存規(guī)范不支持
2ACID事務(wù)Ignite完全支持ACID事務(wù),包括樂觀和悲觀并發(fā)模型以及READ_COMMITTED, REPEATABLE_READ和SERIALIZABLE隔離級別。Redis提供了客戶端樂觀事務(wù)的有限支持,在并發(fā)更新情況下,客戶端需要手工重試事務(wù)。
3數(shù)據(jù)分區(qū)Ignite支持分區(qū)緩存,類似于一個分布式哈希,集群中的每個節(jié)點(diǎn)都存儲數(shù)據(jù)的一部分,在拓?fù)浒l(fā)生變化的情況下,Ignite會自動進(jìn)行數(shù)據(jù)的再平衡。Redis沒有提供分區(qū),但是提供了副本的分片,使用分片非常死板,并且不管是客戶端還是服務(wù)端,每當(dāng)拓?fù)浒l(fā)生變化時都需要一系列相當(dāng)復(fù)雜的手工步驟。
4全復(fù)制Ignite支持緩存的復(fù)制,集群中的每個節(jié)點(diǎn)的每個鍵值對都支持。Redis不提供對全復(fù)制的直接支持。
5原生對象Ignite允許用戶使用自己的領(lǐng)域?qū)ο竽P筒⑶姨峁θ魏蜫ava/Scala, C++和.NET/C#數(shù)據(jù)類型(對象)的原生支持,用戶可以在Ignite緩存中輕易的存儲任何程序和領(lǐng)域?qū)ο蟆?/td>Redis不允許用戶使用自定義數(shù)據(jù)類型,僅支持預(yù)定義的基本數(shù)據(jù)結(jié)構(gòu)集合,比如Set、List、Array以及一些其他的。
6客戶端側(cè)(近)緩存Ignite提供對于最近訪問數(shù)據(jù)的客戶端側(cè)緩存的直接支持。不支持
7(服務(wù)端側(cè))并置處理Ignite支持在服務(wù)器端靠近數(shù)據(jù)以并置的方式直接執(zhí)行任何Java, C++和.NET/C#代碼。Redis通常沒有任何并置處理的能力,服務(wù)器端基本只支持LUA腳本語言,服務(wù)器端不直接支持Java, .NET,或者C++代碼執(zhí)行。
8SQL查詢Ignite支持完整SQL(ANSI-99)語法以查詢內(nèi)存中的數(shù)據(jù)。Redis不支持任何查詢語言,只支持客戶端緩存API。
9持續(xù)查詢Ignite提供對客戶端和服務(wù)器端持續(xù)查詢的支持,用戶可以設(shè)置服務(wù)器端的過濾器來減少和降低傳輸?shù)娇蛻舳说氖录?shù)量。Redis提供客戶端基于鍵的事件通知的支持,但是他不提供服務(wù)器端的過濾器,因此造成了在客戶端和服務(wù)器端中更新通知網(wǎng)絡(luò)流量的顯著增加。
10數(shù)據(jù)庫集成Ignite可以自動集成外部的數(shù)據(jù)庫-RDBMS, NoSQL,和HDFS。Redis無法與外部數(shù)據(jù)庫集成。

“Ignite和Hazelcast有哪些區(qū)別”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI