ApacheIgnite核心特性有哪些

這篇文章主要講解了“Apache Ignite核心特性有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Apache Ignite核心特性有哪些”吧!

創(chuàng)新互聯(lián)公司是一家集成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站設(shè)計(jì)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。

1.數(shù)據(jù)網(wǎng)格

Ignite內(nèi)存數(shù)據(jù)網(wǎng)格是一個(gè)內(nèi)存內(nèi)的鍵值存儲(chǔ),他可以在分布式集群的內(nèi)存內(nèi)緩存數(shù)據(jù)。 它通過(guò)強(qiáng)語(yǔ)義的數(shù)據(jù)位置和關(guān)系數(shù)據(jù)路由,來(lái)降低冗余數(shù)據(jù)的噪聲,使其可以節(jié)點(diǎn)數(shù)的線性增長(zhǎng),直至幾百個(gè)節(jié)點(diǎn)。 Ignite數(shù)據(jù)網(wǎng)格速度足夠快,經(jīng)過(guò)官方不斷的測(cè)試,目前,他是分布式集群中支持事務(wù)性或原子性數(shù)據(jù)的最快的實(shí)現(xiàn)之一。 特性一覽

1.1.鍵值存儲(chǔ)

Ignite數(shù)據(jù)網(wǎng)格是一個(gè)內(nèi)存內(nèi)的鍵值存儲(chǔ),可以視為分布式的分區(qū)后的哈希,集群中每個(gè)節(jié)點(diǎn)都持有所有數(shù)據(jù)的一部分,這意味著集群內(nèi)節(jié)點(diǎn)越多,就可以緩存越多的數(shù)據(jù)。 和其他鍵值存儲(chǔ)不同,Ignite通過(guò)可插拔的哈選算法來(lái)決定數(shù)據(jù)的位置,每個(gè)客戶端都可以通過(guò)插入一個(gè)自定義的哈希函數(shù)來(lái)決定一個(gè)鍵屬于那個(gè)節(jié)點(diǎn),并不需要任何特殊的映射服務(wù)或者命名節(jié)點(diǎn)。

1.2.JCache(JSR107)

Ignite 100%兼容于JCache(JSR107)規(guī)范,JCache為數(shù)據(jù)緩存提供了非常簡(jiǎn)單,但是功能又非常強(qiáng)大的API。 JCache的一部分API包括:

  • 基本緩存操作

  • ConcurrentMap APIs

  • 并行處理(EntryProcessor)

  • 事件和度量

  • 可插拔的持久化

1.3.分區(qū)和復(fù)制

根據(jù)配置,Ignite可以對(duì)內(nèi)存內(nèi)的數(shù)據(jù)進(jìn)行分區(qū)和復(fù)制,和REPLICATED模式不同,數(shù)據(jù)是在集群內(nèi)的所有節(jié)點(diǎn)中全復(fù)制的,在PARTITIONED模式中,數(shù)據(jù)是在集群內(nèi)的多個(gè)節(jié)點(diǎn)中平均拆分的,允許在內(nèi)存內(nèi)緩存TB級(jí)的數(shù)據(jù)。 Ignite也可以配置成具有多個(gè)副本,來(lái)保證故障時(shí)的數(shù)據(jù)彈性。 不管使用那種緩存模式,Ignite都保證任何故障模式下跨所有集群節(jié)點(diǎn)的數(shù)據(jù)一致性。

1.4.自修復(fù)集群

Ignite集群可以自我修復(fù),故障時(shí)客戶端會(huì)自動(dòng)重連,慢的客戶端會(huì)被自動(dòng)踢出,故障節(jié)點(diǎn)的數(shù)據(jù)也會(huì)被自動(dòng)傳播到網(wǎng)格內(nèi)的其他節(jié)點(diǎn)。

1.5.客戶端近緩存

當(dāng)數(shù)據(jù)被遠(yuǎn)程客戶端訪問(wèn)時(shí),Ignite也支持客戶端側(cè)的近緩存,在事務(wù)模式下,近緩存中的數(shù)據(jù)仍然是事務(wù)性的,要么是自動(dòng)更新,要么是以一直的方式更新事務(wù)提交無(wú)效。

1.6.ACID事務(wù)

Ignite支持2種模式的緩存操作,事務(wù)性和原子性,事務(wù)模式下,可以事務(wù)性的將多個(gè)緩存操作作為一組,而原子模式下支持多個(gè)原子操作,一次一個(gè)。原子模式更輕量通常比事務(wù)模式緩存具有更好的性能。 事務(wù)模式下Ignite支持樂(lè)觀事務(wù)和悲觀事務(wù),使用了盡可能經(jīng)過(guò)一階段提交優(yōu)化后的2階段提交協(xié)議。

1.7.查詢和分布式關(guān)聯(lián)

Ignite提供了非常優(yōu)雅的查詢API,支持:

  • 基于謂詞的掃描查詢

  • SQL查詢(ANSI 99)

  • 文本查詢

對(duì)于SQL和文本查詢,Ignite提供了內(nèi)存內(nèi)的索引,因此所有的數(shù)據(jù)查詢都是非常快的,如果在堆外內(nèi)存緩存數(shù)據(jù),查詢索引也會(huì)在堆外內(nèi)存中。 Ignite也允許用戶使用可插拔的IndexingSpi來(lái)定制自己的索引。

1.8.持續(xù)查詢

持續(xù)查詢對(duì)于當(dāng)執(zhí)行一個(gè)查詢后又想持續(xù)的獲得之前的查詢結(jié)果的數(shù)據(jù)更新通知時(shí),是非常有用的。

1.9.堆內(nèi)和堆外內(nèi)存

Ignite支持2種模式緩存內(nèi)存內(nèi)的數(shù)據(jù),堆內(nèi)和堆外,堆外內(nèi)存允許當(dāng)堆太大時(shí)將數(shù)據(jù)存儲(chǔ)在主Java堆空間之外,來(lái)避免JVM垃圾回收時(shí)導(dǎo)致的暫停,但是數(shù)據(jù)仍然在內(nèi)存中。 只要配置了堆外內(nèi)存,Ignite同時(shí)也會(huì)在堆外存儲(chǔ)索引,這意味著索引不會(huì)占用任何堆內(nèi)內(nèi)存空間。

1.10.分層存儲(chǔ)

當(dāng)數(shù)據(jù)訪問(wèn)率下降時(shí),ignite會(huì)有選擇的將數(shù)據(jù)從堆內(nèi)內(nèi)存遷移至堆外內(nèi)存,甚至從堆外內(nèi)存遷移至交換(磁盤)存儲(chǔ)。 當(dāng)這部分?jǐn)?shù)據(jù)又被訪問(wèn)時(shí),他會(huì)立即被遷移到頂層,同時(shí)將其他的訪問(wèn)率低的數(shù)據(jù)遷移到更低的下一個(gè)內(nèi)存層。

1.11.JDBC驅(qū)動(dòng)

Ignite同時(shí)提供JDBC驅(qū)動(dòng),允許用戶使用標(biāo)準(zhǔn)SQL查詢和JDBC API獲得緩存內(nèi)的分布式數(shù)據(jù)。 Ignite允許用戶使用任何標(biāo)準(zhǔn)SQL工具連接至Ignite然后在Ignite緩存的內(nèi)存數(shù)據(jù)中開始執(zhí)行SQL查詢。

1.12.Web Session集群化

Ignite數(shù)據(jù)網(wǎng)格能夠緩存任何支持Java Servlet3.0規(guī)范的的應(yīng)用服務(wù)器的Web Session,包括Apache Tomcat,Eclipse Jetty,Oracle WebLogic以及其他。 當(dāng)運(yùn)行應(yīng)用服務(wù)器集群時(shí)緩存Web Session對(duì)于提高Servlet容器的性能以及可擴(kuò)展性是非常有用的。

1.13.Hibernate二級(jí)緩存

Ignite可以作為Hibernate的二級(jí)緩存,他可以顯著的提高應(yīng)用中持久化層的速度。

1.14.Spring緩存

Ignite支持基于Spring注解方式的Java方法緩存,這樣的話,一個(gè)方法的執(zhí)行結(jié)果就可以緩存在Ignite緩存中。以后如果同一個(gè)方法通過(guò)同樣的參數(shù)集進(jìn)行調(diào)用,結(jié)果會(huì)直接從緩存中獲取而不是實(shí)際執(zhí)行這個(gè)方法。

2.計(jì)算網(wǎng)格

分布式計(jì)算是通過(guò)并行處理的方式來(lái)獲得更高的性能,更低的延遲以及線性可擴(kuò)展性,Ignite計(jì)算網(wǎng)格提供了一組簡(jiǎn)單的API來(lái)允許用戶在集群內(nèi)的多臺(tái)計(jì)算機(jī)中執(zhí)行分布式計(jì)算和數(shù)據(jù)處理。 分布式計(jì)算是基于在集群內(nèi)的節(jié)點(diǎn)中進(jìn)行任何的計(jì)算然后將結(jié)果返回的能力。 特性一覽

2.1.分布式閉包執(zhí)行

Ignite計(jì)算網(wǎng)格允許對(duì)集群內(nèi)的任何閉包進(jìn)行廣播和負(fù)載平衡,包括Java8 lambda,還包括純Java Runnables和Callables。

2.2.ForkJoin執(zhí)行

ComputeTask是Ignite對(duì)內(nèi)存內(nèi)ForkJoin的抽象和范式,也是MapReduce的一個(gè)輕量級(jí)形式,純MapReduce并不是為了性能而構(gòu)建,只是適用于進(jìn)行離線數(shù)據(jù)的批量處理(比如Hadoop MapReduce)。 然而,對(duì)駐留在內(nèi)存的數(shù)據(jù)進(jìn)行計(jì)算時(shí),實(shí)時(shí)性,低延遲和高吞吐量通常具有很高的優(yōu)先級(jí),同時(shí),簡(jiǎn)化API也非常重要?;谶@些考慮,Ignite提供了ComputeTask API,這個(gè)就是Ignite的ForkJoin實(shí)現(xiàn)(輕量級(jí)MapReduce)。

2.3.集群化 ExecutorService

Ignite提供了一個(gè)標(biāo)準(zhǔn)JDK中ExecutorService的集群實(shí)現(xiàn),他會(huì)自動(dòng)地在集群內(nèi)以負(fù)載平衡的模式執(zhí)行所有的計(jì)算。計(jì)算也會(huì)容錯(cuò)并且只要有一個(gè)節(jié)點(diǎn)就能保證執(zhí)行,你可以把他視為集群化的分布式的線程池。

2.4.計(jì)算和數(shù)據(jù)的并置

計(jì)算和數(shù)據(jù)的并置可以使網(wǎng)絡(luò)中數(shù)據(jù)序列化最小化,并且可以顯著的提高應(yīng)用的性能和可擴(kuò)展性。不管何時(shí),都要盡量做好集群節(jié)點(diǎn)中緩存的待處理數(shù)據(jù)和計(jì)算的并置。 Ignite根據(jù)需要,可以提供多種方式自動(dòng)或者手動(dòng)地進(jìn)行計(jì)算和數(shù)據(jù)的并置。

2.5.容錯(cuò)

Ignite支持自動(dòng)作業(yè)故障切換。如果一個(gè)節(jié)點(diǎn)崩潰或其他錯(cuò)誤,作業(yè)會(huì)自動(dòng)轉(zhuǎn)移到其他可用節(jié)點(diǎn)重新執(zhí)行??刹灏蔚腇ailoverSpi負(fù)責(zé)進(jìn)行執(zhí)行一個(gè)故障任務(wù)時(shí)新節(jié)點(diǎn)的選擇。 至少一次保證:Ignite保證只要有一個(gè)節(jié)點(diǎn)存在,任務(wù)就不會(huì)丟失。

2.6.負(fù)載均衡

負(fù)載平衡組件負(fù)責(zé)平衡集群內(nèi)各節(jié)點(diǎn)的分布式任務(wù)。Ignite中負(fù)載平衡是通過(guò)可插拔的LoadBalancingSpi實(shí)現(xiàn)的,它控制集群內(nèi)所有節(jié)點(diǎn)的負(fù)載并且確保集群內(nèi)的每個(gè)節(jié)點(diǎn)的均衡負(fù)載。 對(duì)于同質(zhì)化環(huán)境中的同質(zhì)化任務(wù),負(fù)載平衡是通過(guò)隨機(jī)或者循環(huán)的策略實(shí)現(xiàn)的。然而,在很多其他的場(chǎng)景中,特別是在負(fù)荷不均衡時(shí),他提供了很多的更復(fù)雜的自適應(yīng)的負(fù)載平衡策略。

2.7.任務(wù)檢查點(diǎn)

檢查點(diǎn)是通過(guò)可插拔的CheckpointSpi實(shí)現(xiàn)的,他提供了一個(gè)保存作業(yè)中間狀態(tài)的功能,檢查點(diǎn)對(duì)于長(zhǎng)期執(zhí)行的任務(wù)需要保存一些中間狀態(tài)以防止節(jié)點(diǎn)故障是非常有用的。當(dāng)一個(gè)故障節(jié)點(diǎn)重啟時(shí),一個(gè)作業(yè)可以載入一個(gè)保存的檢查點(diǎn)然后從故障處繼續(xù)執(zhí)行。

2.8.作業(yè)調(diào)度

可插拔的CollisionSpi對(duì)于待執(zhí)行的作業(yè)到達(dá)某個(gè)節(jié)點(diǎn)時(shí)如何進(jìn)行調(diào)度提供了細(xì)粒度的控制。他提供了很多的策略,包括:FIFO,優(yōu)先級(jí)甚至磨洋工。

3.流式計(jì)算和CEP

Ignite流式計(jì)算允許以可擴(kuò)展和容錯(cuò)的方式處理連續(xù)的、無(wú)止境的數(shù)據(jù)流。在一個(gè)中等規(guī)模的集群中,數(shù)據(jù)注入Ignite的比例會(huì)很高,很容易達(dá)到每秒百萬(wàn)級(jí)的規(guī)模。 工作方式:

  1. 客戶端將流式數(shù)據(jù)注入Ignite;

  2. 數(shù)據(jù)在Ignite數(shù)據(jù)節(jié)點(diǎn)中自動(dòng)分區(qū);

  3. 數(shù)據(jù)在滑動(dòng)窗口中并發(fā)處理;

  4. 客戶端在流式數(shù)據(jù)中執(zhí)行并發(fā)SQL查詢;

  5. 客戶端訂閱數(shù)據(jù)變化的持續(xù)查詢。

特性一覽

3.1.數(shù)據(jù)流處理器

數(shù)據(jù)流處理器是由IgniteDataStreamer API定義的,他是為了將大量的持續(xù)數(shù)據(jù)流注入Ignite流緩存而構(gòu)建的。數(shù)據(jù)流處理器以可擴(kuò)展和容錯(cuò)的方式,為所有數(shù)據(jù)流注入ignite提供了至少一次保證

3.2.并行處理

當(dāng)你需要執(zhí)行自己的業(yè)務(wù)邏輯而不僅僅是添加新數(shù)據(jù)時(shí),就需要利用StreamRecerver API的優(yōu)勢(shì)了。 流接收器允許直接在緩存數(shù)據(jù)的節(jié)點(diǎn)上以并行的方式處理數(shù)據(jù)流,在數(shù)據(jù)進(jìn)入緩存之前可以修改數(shù)據(jù)或者添加任何自定義預(yù)處理邏輯.

3.3.滑動(dòng)窗口

Ignite流功能允許在數(shù)據(jù)滑動(dòng)窗口內(nèi)進(jìn)行查詢?;瑒?dòng)窗口被配置為Ignite的緩存抽取策略,可以基于時(shí)間、基于大小或者基于批量處理,可以配置一個(gè)緩存一個(gè)數(shù)據(jù)窗口,如果你需要同一個(gè)數(shù)據(jù)具有不同的滑動(dòng)窗口的話,也可以非常容易的為同一個(gè)數(shù)據(jù)定義不止一個(gè)緩存。

3.4.滑動(dòng)窗口查詢

可以使用所有的Ignite數(shù)據(jù)索引功能,再加上Ignite SQL、TEXT,以及基于謂詞的緩存查詢,在數(shù)據(jù)流中進(jìn)行查詢。

3.5.持續(xù)查詢

持續(xù)查詢對(duì)于當(dāng)執(zhí)行一個(gè)查詢后又想持續(xù)的獲得之前的查詢結(jié)果的數(shù)據(jù)更新通知時(shí),是非常有用的。

4.分布式數(shù)據(jù)結(jié)構(gòu)

Ignite以分布式的形式支持基于java.util.concurrent框架的大部分?jǐn)?shù)據(jù)結(jié)構(gòu)。比如,可以在一個(gè)節(jié)點(diǎn)上使用java.util.concurrent.BlockingQeque加入一些東西,然后再另一個(gè)節(jié)點(diǎn)上獲取它?;蛘哂幸粋€(gè)分布式的ID生成器,他可以保證所有節(jié)點(diǎn)上的ID唯一性。 支持的數(shù)據(jù)結(jié)構(gòu)包括:

  • Concurrent Map (Cache)

  • 分布式隊(duì)列和集合

  • AtomicLong

  • AtomicReference

  • AtomicSequence (ID Generator)

  • CountDownLatch

特性一覽

4.1.并置和非并置

隊(duì)列和集合可以以并置或者非并置的方式進(jìn)行部署。在并置模式中,集合中的所有元素都會(huì)駐留在同一個(gè)集群節(jié)點(diǎn)上。這種模式下,應(yīng)該使用相對(duì)較小的集合。在非并置模式下,集合的元素會(huì)均等地分布在集群內(nèi),這就允許在內(nèi)存內(nèi)保存很大的集合。

4.2.有界隊(duì)列

有界隊(duì)列允許用戶持有一個(gè)有預(yù)定義最大容量的隊(duì)列,這將有助于控制整個(gè)緩存的容量。

4.3.基于預(yù)留的ID生成器

ID生成器是通過(guò)AtomicSequence實(shí)現(xiàn)的,當(dāng)你以原子序列執(zhí)行incrementAndGet()(或任何其他的原子性操作)時(shí),數(shù)據(jù)結(jié)構(gòu)會(huì)保存未來(lái)值的一個(gè)范圍,這會(huì)保證跨集群內(nèi)該序列實(shí)例的唯一性。 直到所有保存的值都被使用,所有的序列增長(zhǎng)操作都會(huì)發(fā)生在客戶端本地。

5.分布式消息

Ignite提供了集群范圍內(nèi)的高性能的消息功能,支持基于發(fā)布-訂閱以及直接點(diǎn)對(duì)點(diǎn)通信模型的數(shù)據(jù)交換。消息可以以有序的,也可以以無(wú)序的方式進(jìn)行交換。

特性一覽

5.1.有序和無(wú)序

Ignite支持有序的以及無(wú)序的消息,有序消息要稍微慢一點(diǎn),但是如果你用的話,Ignite保證收到消息的順序和發(fā)送消息的順序一致。

5.2.主題和點(diǎn)對(duì)點(diǎn)

Ignite消息支持基于主題的訂閱,主題消息可以發(fā)送給一組節(jié)點(diǎn),也可以發(fā)送給某一個(gè)節(jié)點(diǎn)。

6.服務(wù)網(wǎng)格

服務(wù)網(wǎng)格允許用戶在集群中任意部署自定義的服務(wù),比如自定義計(jì)數(shù)器,ID生成器,分級(jí)映射等。 服務(wù)網(wǎng)格的主要應(yīng)用場(chǎng)景是提供了在集群中部署各種單例服務(wù)的能力。但是,如果你需要一個(gè)服務(wù)的多實(shí)例,Ignite也能保證所有服務(wù)實(shí)例的正確部署和容錯(cuò)。 特性一覽

6.1.用戶定義服務(wù)

用戶可以定義自己的服務(wù)并且Ignite會(huì)自動(dòng)在集群內(nèi)進(jìn)行服務(wù)的分布化。比如,你可以創(chuàng)建自己特定的分布式計(jì)數(shù)器,或者自定義的數(shù)據(jù)加載服務(wù),或者任何其他邏輯,然后將其部署到集群中。

6.2.集群?jiǎn)卫?/h3>

Ignite允許將任意數(shù)量的服務(wù)部署到網(wǎng)各節(jié)點(diǎn),然而,最經(jīng)常被使用的特性是在集群中部署單例服務(wù),不管是拓?fù)渥兏€是節(jié)點(diǎn)故障,Ignite都會(huì)維護(hù)單一性。

6.3.容錯(cuò)

Ignite會(huì)保證服務(wù)的持續(xù)有效,以及按照指定的配置進(jìn)行部署,不管是拓?fù)渥兏€是節(jié)點(diǎn)故障。

6.4.負(fù)載平衡

在所有的情況下,不只是單例服務(wù)部署,Ignite都會(huì)自動(dòng)地確保在集群內(nèi)的每個(gè)節(jié)點(diǎn)上部署大致數(shù)量相等的服務(wù)。當(dāng)集群拓?fù)浒l(fā)生變化時(shí),Ignite會(huì)對(duì)部署的服務(wù)進(jìn)行重新評(píng)估,然后可能對(duì)已經(jīng)部署的服務(wù)重新在其他節(jié)點(diǎn)上部署以保證更好的負(fù)載平衡。

7.Spark共享RDD

Apache Ignite提供了一個(gè)Spark RDD抽象的實(shí)現(xiàn),他允許跨越多個(gè)Spark作業(yè)時(shí)方便地在內(nèi)存內(nèi)共享狀態(tài),不管是在同一個(gè)應(yīng)用內(nèi)部還是在不同的Spark應(yīng)用之間。 IgniteRDD作為Ignite分布式緩存的視圖,既可以在Spark作業(yè)執(zhí)行進(jìn)程中部署,也可以在Spark workder中部署,也可以在他自己的集群中部署。 根據(jù)事先配置好的部署模型,狀態(tài)共享既可以只存在于一個(gè)Spark應(yīng)用的生命周期的內(nèi)部(嵌入式模式),或者也可以存在于Spark應(yīng)用的外部(獨(dú)立模式),這種模式下狀態(tài)可以在多個(gè)Spark應(yīng)用之間共享。

特性一覽

7.1.共享Spark RDD

IgniteRDD是原生Spark RDD的一個(gè)實(shí)現(xiàn),DataFrame API具有所有標(biāo)準(zhǔn)RDD的功能,并且RDD的狀態(tài)可以在Spark作業(yè)、應(yīng)用以及worker之間共享。

7.2.更快的SQL

Spark不支持SQL索引,但是Ignite可以,由于先進(jìn)的內(nèi)存索引功能,IgniteRDD在執(zhí)行SQL查詢時(shí)比Spark原生RDD或者DataFrame有百倍的性能提升。

8.內(nèi)存文件系統(tǒng)

Ignite一個(gè)獨(dú)有的技術(shù)就是分布式內(nèi)存文件系統(tǒng)(IGFS),IGFS提供了和Hadoop HDFS類似的功能,但是僅僅在內(nèi)存內(nèi)部。事實(shí)上,除了他自己的API,IGFS實(shí)現(xiàn)了Hadoop的文件系統(tǒng)API,并且可以透明地加入Hadoop或者Spark應(yīng)用。 IGFS將每個(gè)文件中的數(shù)據(jù)拆分為獨(dú)立的數(shù)據(jù)塊然后將他們存儲(chǔ)在分布式內(nèi)存緩存中。然而和Hadoop HDFS不同,IGFS不需要一個(gè)name節(jié)點(diǎn),并且用一個(gè)哈希函數(shù)自動(dòng)地確定文件數(shù)據(jù)位置。 IGFS可以獨(dú)立部署,也可以部署在HDFS之上,不管是哪種情況,他對(duì)于HDFS中存儲(chǔ)的文件都是一個(gè)透明的緩存層。

特性一覽

8.1.堆內(nèi)和堆外

IGFS既可以在堆內(nèi),也可以在堆外存儲(chǔ)文件,對(duì)于更大的存儲(chǔ)空間關(guān)鍵是利用堆外來(lái)避免長(zhǎng)時(shí)間的JVM垃圾回收導(dǎo)致的暫停。

8.2.IGFS作為Hadoop文件系統(tǒng)

IGFS實(shí)現(xiàn)了Hadoop的FileSystem API,并且可以部署為原生的Hadoop文件系統(tǒng),就像HDFS一樣,這樣就可以在Hadoop或者Spark環(huán)境中以即插即用的方式原生部署IGFS。

8.3.Hadoop文件系統(tǒng)緩存

IGFS也可以在另一個(gè)Hadoop文件系統(tǒng)上部署為一個(gè)緩存層。這種情況下,IGFS中的一個(gè)文件如果發(fā)生變化,更新會(huì)被自動(dòng)地寫入HDFS。此外,如果讀取了一個(gè)文件并且當(dāng)時(shí)他不在IGFS中,Ignite會(huì)自動(dòng)地將其從HDFS載入IGFS。

8.4.Hadoop發(fā)行版

IGFS集成了一個(gè)原生的Apache Hadoop,也支持Cloudera CDH以及Hortonworks HDP。

9.內(nèi)存MapReduce

Apache Ignite帶來(lái)了一個(gè)Hadoop MapReduce API的內(nèi)存實(shí)現(xiàn),他比原生的Hadoop MapReduce實(shí)現(xiàn)有了顯著的性能提升。Ignite MapReduce比Hadoop性能更好,是因?yàn)榛谕频馁Y源分配以及數(shù)據(jù)的進(jìn)程內(nèi)協(xié)同計(jì)算。 另外,因?yàn)镮GFS不需要一個(gè)name節(jié)點(diǎn),當(dāng)使用IGFS時(shí),Ignite MapReduce作業(yè)會(huì)在一個(gè)鏈路內(nèi)直達(dá)IGFS數(shù)據(jù)節(jié)點(diǎn)。

特性一覽

9.1.原生Hadoop MapReduce

Ignite MapReduce是Hadoop MapReduce API的一個(gè)實(shí)現(xiàn),他可以原生地加入已有的Hadoop環(huán)境,并且性能有很大的提升。

9.2.Hadoop加速

Ignite提供了一個(gè)Hadoop的加速發(fā)行版,包括IGFS以及Ignite MapReduce,這個(gè)環(huán)境可以很容易地加入已有的Hadoop環(huán)境。

10.客戶端協(xié)議

對(duì)于客戶端連接Ignite集群,Ignite提供了若干種協(xié)議,包括Ignite原生客戶端,REST/HTTP,SSL/TLS,Memcached,Node.js(正在開發(fā)中)等等。 特性一覽

10.1.Ignite原生客戶端

對(duì)于客戶端遠(yuǎn)程連接Ignite,原生客戶端提供了完整的功能,他允許使用完整的Ignite API,包括近緩存,事務(wù),計(jì)算,流式處理,服務(wù)等等。

10.2.Memcached

Ignite兼容于Memcached,他允許用戶使用任何Memcached兼容客戶端在Ignite緩存中保存以及獲取分布式數(shù)據(jù),包括Java、PHP、Python、Ruby以及其他的客戶端。

10.3.REST/HTTP

Ignite提供了一個(gè)HTTP REST客戶端,可以以REST的方式通過(guò)HTTP或者HTTPS協(xié)議進(jìn)行通信。REST API可以進(jìn)行執(zhí)行很多的操作,比如從緩存中讀取,實(shí)行任務(wù),獲取各種度量等等。

10.4.SSL/TLS

Ignite允許在所有的Ignite客戶端和服務(wù)端節(jié)點(diǎn)之間使用SSL進(jìn)行Socket通信。

10.5.Node.js(開發(fā)中)

Ignite未來(lái)會(huì)提供Node.js客戶端,他能進(jìn)行所有的緩存操作以及在Ignite中存儲(chǔ)的JSON數(shù)據(jù)中執(zhí)行SQL查詢。

11.部署環(huán)境

Apache Ignite可以獨(dú)立運(yùn)行,在集群中運(yùn)行,在Docker容器中運(yùn)行,還可以運(yùn)行在Apache Mesos以及Hadoop Yarn環(huán)境。他可以在物理機(jī)上運(yùn)行,也可以在虛擬機(jī)上運(yùn)行。

特性一覽

11.1.獨(dú)立集群

Ignite節(jié)點(diǎn)之間會(huì)自動(dòng)感知,這有助于集群的可擴(kuò)展性,而不需要重啟集群,簡(jiǎn)單地啟動(dòng)新加入的節(jié)點(diǎn)然后他們就是自動(dòng)地加入集群。

11.2.Docker容器

Docker可以將Ignite及其所有的依賴打包進(jìn)一個(gè)標(biāo)準(zhǔn)的映像。Docker下載Ignite版本映像之后,就可以將用戶的應(yīng)用部署進(jìn)Ignite,配置節(jié)點(diǎn),他會(huì)自動(dòng)啟動(dòng)整個(gè)配置后的Ignite節(jié)點(diǎn)。

11.3.公共云

對(duì)于公共云環(huán)境,Ignite原生地集成了Amazon AWS和GCE,對(duì)于其他的云環(huán)境,Ignite集成了Apache JCloud,他支持大多數(shù)已有的云服務(wù)商。

11.4.Apache Mesos

Ignite提供了Apache Mesos的原生支持,可以很容易地將Ignite部署進(jìn)Mesos數(shù)據(jù)中心,比如Hadoop和Spark環(huán)境。

11.5.Hadoop Yarn

Ignite提供了Hadoop Yarn的原生支持,可以很容易地將Ignite部署進(jìn)Hadoop和Spark環(huán)境。

感謝各位的閱讀,以上就是“Apache Ignite核心特性有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Apache Ignite核心特性有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

分享名稱:ApacheIgnite核心特性有哪些
本文網(wǎng)址:http://muchs.cn/article46/jehjhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、小程序開發(fā)、用戶體驗(yàn)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)