ApacheIgnite有哪些特性

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

成都一家集口碑和實力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術(shù),十年企業(yè)及個人網(wǎng)站建設(shè)經(jīng)驗 ,為成都數(shù)千家客戶提供網(wǎng)頁設(shè)計制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營銷型網(wǎng)站建設(shè),品牌網(wǎng)站制作,同時也為不同行業(yè)的客戶提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)建站

1.事務(wù)和分析

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

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

特性一覽

1.1.1.鍵值存儲

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

1.1.2.JCache(JSR107)

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

  • 基本緩存操作

  • ConcurrentMap APIs

  • 并置處理(EntryProcessor)

  • 事件和度量

  • 可插拔的持久化?

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

根據(jù)配置,Ignite可以對內(nèi)存內(nèi)的數(shù)據(jù)進行分區(qū)或者復(fù)制,和REPLICATED模式不同,數(shù)據(jù)是在集群內(nèi)的所有節(jié)點中全復(fù)制的,在PARTITIONED模式中,數(shù)據(jù)是在集群內(nèi)的多個節(jié)點中平均拆分的,允許在內(nèi)存內(nèi)緩存TB級的數(shù)據(jù)。 Ignite也可以配置成具有多個副本,來保證故障時的數(shù)據(jù)彈性。

1.1.4.并置處理

Ignite可以在接近數(shù)據(jù)的服務(wù)端,以并置的方式執(zhí)行執(zhí)行任何原生的Java、C++和.Net/C#代碼。

1.1.5.自修復(fù)集群

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

1.1.6.客戶端近緩存

近緩存是本地客戶端側(cè)的緩存,他會存儲最近和最頻繁訪問的數(shù)據(jù)。

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

Ignite在內(nèi)存中支持2種模式的數(shù)據(jù)緩存,堆內(nèi)堆外。當(dāng)緩存數(shù)據(jù)占用很大的堆,超過了Java主堆空間時,堆外存儲可以克服JVM垃圾回收(gc)導(dǎo)致的長時間暫停,但數(shù)據(jù)仍然在內(nèi)存內(nèi)。

1.1.8.堆外索引

當(dāng)配置為堆外存儲時,Ignite同時也會在堆外存儲查詢索引,這意味著索引不會占用任何堆內(nèi)內(nèi)存的空間。

1.1.9.分層存儲

如果數(shù)據(jù)變冷(不被訪問),Ignite會有選擇地將其從堆內(nèi)移動到堆外,然后再從堆外移動到交換存儲(磁盤)。 當(dāng)某些數(shù)據(jù)又被訪問時,他會立即被傳播到頂層,并且將其他的冷數(shù)據(jù)降到低一級的存儲層。

1.1.10.二進制協(xié)議

從1.5版本開始,Ignite引入了一個新的存儲緩存數(shù)據(jù)的概念,叫做二進制對象,他可以:

  • 讀取一個序列化的對象的屬性而不需要將整個對象反序列化;

  • 動態(tài)改變一個對象的結(jié)構(gòu);

  • 動態(tài)創(chuàng)建一個對象的結(jié)構(gòu)。

1.1.11.ACID事務(wù)

Ignite提供了一個完全符合ACID的分布式事務(wù)來保證一致性。 Ignite支持樂觀悲觀的并發(fā)模型以及讀提交、可復(fù)制讀序列化的隔離級別。 Ignite的事務(wù)使用了二階段提交協(xié)議,適當(dāng)?shù)匾策M行了很多一階段提交的優(yōu)化。

1.1.12.無死鎖事務(wù)

Ignite支持無死鎖的樂觀事務(wù),他不獲得任何鎖,用戶也不用擔(dān)心鎖的順序,這樣的事務(wù)也提供了更好的性能。

1.1.13.事務(wù)化EntryProcessor

Ignite的事務(wù)化EntryProcessor可以在服務(wù)端以一個事務(wù)來執(zhí)行并置化的邏輯。

1.1.14.跨分區(qū)事務(wù)

Ignite可以在整個集群中,在一個緩存的所有分區(qū)中執(zhí)行事務(wù)。

1.1.15.鎖

Ignite允許開發(fā)人員定義明確的鎖來強制緩存對象的互斥。

1.1.16.SQL查詢

Ignite支持使用標(biāo)準(zhǔn)的SQL語法(ANSI 99)來查詢緩存,可以使用任何的SQL函數(shù),包括聚合和分組。

1.1.17.分布式關(guān)聯(lián)

Ignite支持分布式的SQL關(guān)聯(lián)跨緩存的關(guān)聯(lián)

1.1.18.持續(xù)查詢

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

1.1.19.查詢索引

對于SQL查詢,Ignite支持內(nèi)存內(nèi)的索引,因此所有的數(shù)據(jù)檢索都是非??斓?。

1.1.20.查詢一致性

Ignite支持完整的查詢一致性,查詢開始執(zhí)行后的更新不會影響查詢的結(jié)果。

1.1.21.查詢?nèi)蒎e

Ignite的查詢是容錯的,即查詢結(jié)果總是一致的并且不會受到集群拓?fù)涓淖兊挠绊憽?/p>

1.1.22.JDBC驅(qū)動

Ignite提供JDBC驅(qū)動,可以使用標(biāo)準(zhǔn)SQL查詢和JDBC API獲得緩存內(nèi)的分布式數(shù)據(jù)。

1.1.23.ODBC驅(qū)動

Ignite的ODBC驅(qū)動可以使用標(biāo)準(zhǔn)的SQL查詢和ODBC API來從緩存中獲得數(shù)據(jù)。

1.1.24.通寫

通寫模式允許更新數(shù)據(jù)庫中的數(shù)據(jù)。

1.1.25.通讀

通讀模式允許從數(shù)據(jù)庫中讀取數(shù)據(jù)。

1.1.26.后寫緩存

Ignite提供了一個選項,通過后寫緩存來異步地執(zhí)行數(shù)據(jù)庫更新。

1.1.27.自動持久化

自動化地連接底層數(shù)據(jù)庫并且生成XML的對象關(guān)系映射配置和Java領(lǐng)域模型POJO。

1.1.28.數(shù)據(jù)庫集成

Ignite可以自動地與外部數(shù)據(jù)庫集成,包括RDBMS、NOSQL和HDFS。

1.1.29.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īng)用服務(wù)器集群時緩存Web Session對于提高Servlet容器的性能以及可擴展性是非常有用的。

1.1.30.Hibernate二級緩存

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

1.1.31.Spring緩存

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

1.1.32.C#/.NET

Ignite.NET構(gòu)建于Ignite之上,他可以執(zhí)行幾乎所有的內(nèi)存數(shù)據(jù)網(wǎng)格操作,包括ACID事務(wù)、SQL查詢、分布式關(guān)聯(lián)、消息和事件等。

1.1.33.C++

Ignite.C++構(gòu)建于Ignite之上,他可以執(zhí)行幾乎所有的內(nèi)存數(shù)據(jù)網(wǎng)格操作,包括SQL查詢、分布式關(guān)聯(lián)等。

1.1.34.XA/JTA

Ignite可以配置為一個Java事務(wù)API(JTA)事務(wù)管理器搜索類。

1.1.35.OSGi支持

Ignite提供了對OSGi的支持。

1.2.計算網(wǎng)格

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

特性一覽

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

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

1.2.2.ForkJoin處理

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

1.2.3.集群化 ExecutorService

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

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

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

1.2.5.容錯

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

1.2.6.負(fù)載均衡

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

1.2.7.作業(yè)檢查點

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

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

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

1.3.流式計算和CEP

Ignite流式計算允許以可擴展和容錯的方式處理連續(xù)不中斷的數(shù)據(jù)流。在一個中等規(guī)模的集群中,數(shù)據(jù)注入Ignite的比例會很高,很容易達(dá)到每秒百萬級的規(guī)模。 工作方式:

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

  2. 數(shù)據(jù)在Ignite數(shù)據(jù)節(jié)點中自動分區(qū);

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

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

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

Apache Ignite有哪些特性

特性一覽

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

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

1.3.2.并置處理

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

1.3.3.滑動窗口

Ignite流功能也允許在數(shù)據(jù)滑動窗口內(nèi)進行查詢?;瑒哟翱诒慌渲脼镮gnite的緩存退出策略,可以基于時間、基于大小或者基于批量處理,可以配置一個緩存一個數(shù)據(jù)窗口,然而,如果需要同一個數(shù)據(jù)具有不同的滑動窗口,也可以非常容易的為同一個數(shù)據(jù)定義不止一個緩存。

1.3.4.滑動窗口查詢

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

1.3.5.持續(xù)查詢

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

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

Ignite的JMS數(shù)據(jù)流處理器可以從JMS代理中消費消息然后將他們插入Ignite緩存。

1.3.7.Apache Flume Sink

IgniteSink是一個Flume池,他會從一個相關(guān)的Flume通道中提取事件然后將其注入Ignite緩存。

1.3.8.MQTT流處理器

Ignite的MQTT流處理器從一個MQTT主題中消費消息,然后向Ignite緩存提供一個轉(zhuǎn)換后的鍵值對。

1.3.9.Twitter流處理器

Ignite的Twitter流處理器從一個Twitter流API中消費消息,然后將他們注入Ignite緩存。

1.3.10.Apache Kafka流處理器

Ignite的Kafka數(shù)據(jù)流處理器從一個Kafka代理中的給定Kafka主題中消費消息,然后將他們插入Ignite緩存。

1.3.11.Apache Camel流處理器

Ignite的Camel流處理器從一個Apache Camel消費者端點消費消息,然后將他們注入Ignite緩存。

1.3.12.Apache Storm流處理器

Ignite的Storm流處理器從一個Apache Storm消費者端點消費消息,然后將他們注入Ignite緩存。

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

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

支持的數(shù)據(jù)結(jié)構(gòu)包括:

  • Concurrent Map (Cache)

  • 分布式隊列和集合

  • AtomicLong

  • AtomicReference

  • AtomicSequence (ID生成器)

  • CountDownLatch

  • ExecutorService

特性一覽

1.4.1.隊列和集合

Ignite提供了一個快速的分布式阻塞隊列分布式集合的實現(xiàn)。

1.4.2.并置和非并置

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

1.4.3.有界隊列

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

1.4.4.原子化類型

Ignite支持分布式的AtomicLongAtomicReference。

1.4.5.CountDownLatch

Ignite的CountDownLatch可以在所有的Ignite節(jié)點上同步作業(yè)。

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

ID生成器是通過AtomicSequence實現(xiàn)的,當(dāng)以原子序列執(zhí)行incrementAndGet()(或任何其他的原子性操作)時,數(shù)據(jù)結(jié)構(gòu)會保存未來值的一個范圍,這會保證跨集群內(nèi)該序列實例的唯一性。

1.4.7.Semaphore

Ignite的分布式semaphore的實現(xiàn)和行為類似于** java.util.concurrent.Semaphore**。

1.5.分布式消息和事件

Ignite提供了集群范圍的高性能的消息功能,支持基于發(fā)布-訂閱以及直接點對點通信模型的數(shù)據(jù)交換。消息可以以有序的,也可以以無序的方式進行交換。有序消息會稍微有點慢,但是如果使用的話,Ignite會保證收到消息的順序和發(fā)送消息的順序一致。 當(dāng)在分布式網(wǎng)格環(huán)境中發(fā)生各種事件時,Ignite的分布式事件功能可以使應(yīng)用收到通知??梢宰詣拥厥盏郊簝?nèi)的本地和遠(yuǎn)程節(jié)點上發(fā)生的任務(wù)執(zhí)行、讀寫和查詢操作的通知,事件通知也可以分組在一起然后分批或者定期地發(fā)送。

特性一覽

1.5.1.基于主題的消息

Ignite的分布式消息可以使所有的節(jié)點基于主題進行集群范圍的通信。

1.5.2.對對點的消息

Ignite的消息可以發(fā)給一組節(jié)點或者一個單獨的節(jié)點。

1.5.3.有序和無序

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

1.5.4.事件通知

當(dāng)集群內(nèi)發(fā)生各種事件時,Ignite的分布式事件功能可以使應(yīng)用收到通知。

1.5.5.本地和遠(yuǎn)程事件

應(yīng)用可以收到集群內(nèi)的本地和遠(yuǎn)程節(jié)點上有關(guān)任務(wù)執(zhí)行、讀寫和查詢操作的通知。

1.5.6.自動化批處理

事件通知可以分組在一起然后分批或者定期地進行發(fā)送。

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

服務(wù)網(wǎng)格可以在集群中任意部署自定義的服務(wù),可以實現(xiàn)和部署任意服務(wù),比如自定義計數(shù)器,ID生成器,分級映射等。 服務(wù)網(wǎng)格的主要應(yīng)用場景是提供了在集群中部署各種單例服務(wù)的能力。但是,如果需要一個服務(wù)的多實例,Ignite也能保證所有服務(wù)實例的正確部署和容錯。

特性一覽

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

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

1.6.2.集群單例

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

1.6.3.容錯

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

1.6.4.負(fù)載平衡

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

1.7.自動化RDMS集成

Ignite支持與各種持久化存儲的集成,它可以連接數(shù)據(jù)庫,導(dǎo)入模式,配置索引類型,以及自動生成所有必要的XML OR映射配置和Java領(lǐng)域模型POJO,這些都可以輕易地下載和復(fù)制進自己的工程。 Ignite可以與任何支持JDBC驅(qū)動的關(guān)系數(shù)據(jù)庫集成,包括Oracle、PostgreSQL、MS SQL Server和MySQL。 Apache Ignite有哪些特性

1.7.1.RDBMS集成向?qū)?/h5>

通過IgniteWeb控制臺,可以自動化的進行RDBMS集成,這是一個交互式的配置向?qū)?、管理和監(jiān)控工具,它可以:

  • 為Ignite集群創(chuàng)建和下載各種配置;

  • 從任何RDBMS模式自動化地構(gòu)建Ignite的SQL元數(shù)據(jù);

  • 在內(nèi)存緩存中執(zhí)行SQL查詢;

  • 查看查詢的執(zhí)行計劃、內(nèi)存模式以及流化圖表。

Ignite Web控制臺是一個創(chuàng)新工具,它提供了很多豐富的功能來管理Ignite集群,并不限于上述提到的功能。

2.Hadoop和Spark

2.1.Spark共享RDD

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

特性一覽

2.1.1.共享Spark RDD

IgniteRDD是原生Spark RDD和DataFrame API的一個實現(xiàn),除了所有的標(biāo)準(zhǔn)的RDD功能,還會跨越其他的Spark作業(yè)、應(yīng)用和worker共享RDD的狀態(tài)。

2.1.2.更快的SQL

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

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

Ignite一個獨有的技術(shù)就是叫做Ignite文件系統(tǒng)(IGFS)的分布式內(nèi)存文件系統(tǒng),IGFS提供了和Hadoop HDFS類似的功能,但是僅僅在內(nèi)存內(nèi)部。事實上,除了他自己的API,IGFS實現(xiàn)了Hadoop的文件系統(tǒng)API,并且可以透明地加入Hadoop或者Spark應(yīng)用。 IGFS將每個文件中的數(shù)據(jù)拆分為獨立的數(shù)據(jù)塊然后將他們存儲在分布式內(nèi)存緩存中。然而和Hadoop HDFS不同,IGFS不需要一個name節(jié)點,并且用一個哈希函數(shù)自動地確定文件數(shù)據(jù)位置。 IGFS可以獨立部署,也可以部署在HDFS之上,不管是哪種情況,他對于HDFS中存儲的文件都是一個透明的緩存層。 Tachyon替代在Spark環(huán)境中IGFS可以透明地替代Tachyon文件系統(tǒng),鑒于IGFS是基于久經(jīng)考驗的Ignite數(shù)據(jù)網(wǎng)格技術(shù),他會比Tachyon有更好的讀和寫性能,并且更穩(wěn)定。 Hadoop文件系統(tǒng)如果打算使用IGFS作為Hadoop文件系統(tǒng),可以參考Hadoop集成文檔,這時IGFS和HDFS并沒有什么不同。

特性一覽

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

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

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

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

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

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

2.2.4.任意Hadoop發(fā)行版

IGFS集成了一個原生的Apache Hadoop發(fā)行版,也支持Cloudera CDH以及Hortonworks HDP。

2.3.內(nèi)存MapReduce

Apache Ignite帶來了一個Hadoop MapReduce API的內(nèi)存實現(xiàn),他比原生的Hadoop MapReduce實現(xiàn)有了顯著的性能提升。Ignite MapReduce比Hadoop性能更好,是因為基于推的資源分配以及進程內(nèi)的計算和數(shù)據(jù)的并置。 另外,因為IGFS不需要一個name節(jié)點,當(dāng)使用IGFS時,Ignite MapReduce作業(yè)會在一個鏈路內(nèi)直達(dá)IGFS數(shù)據(jù)節(jié)點。

特性一覽

2.3.1.原生Hadoop MapReduce

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

2.3.2.Hadoop加速器

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

3.無處不在地運行

3.1.客戶端協(xié)議

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

3.1.1.Ignite原生客戶端

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

3.1.2.Memcached

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

3.1.3.REST/HTTP

Ignite提供了一個HTTP REST客戶端,可以以REST的方式通過HTTP或者HTTPS協(xié)議進行通信。REST API可以進行執(zhí)行不同的操作,比如從/往緩存中讀/寫、執(zhí)行任務(wù)、獲取各種指標(biāo)等等。

3.1.4.SSL/TLS

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

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

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

3.2.部署選項

Apache Ignite可以獨立運行,在集群中運行,在Docker容器中運行,還可以運行在Apache Mesos以及Hadoop Yarn環(huán)境。他可以在物理機上運行,也可以在虛擬機上運行。 公有云對于公有云環(huán)境,Ignite原生地繼承了Amazon AWS、Google Compute Engine,對于其他的云環(huán)境,Ignite集成了Apache JCloud,他支持大多數(shù)的云供應(yīng)商。 容器Ignite可以容易地運行于容器環(huán)境,Ignite集成了Docker,在服務(wù)器啟動之前可以自動地構(gòu)建并且將用戶代碼部署進Ignite。 資源管理Ignite原生地集成了Hadoop YarnApache Mesos,可以將Ignite輕易地?zé)o縫部署進Hadoop和Spark環(huán)境。 Apache Ignite有哪些特性

特性一覽

3.2.1.零部署

Ignite節(jié)點會自動地感知自定義類,而不需要顯式地部署他們。

3.2.2.動態(tài)模式改變

Ignite以二進制的方式存儲對象,而不需要在服務(wù)端節(jié)點上部署類。

3.2.3.獨立集群

Ignite節(jié)點之間會自動感知,這有助于必要時擴展集群,而不需要重啟整個集群,簡單地啟動新加入的節(jié)點然后他們就是自動地加入集群。

3.2.4.Docker容器

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

3.2.5.公共云

對于公有云環(huán)境,Ignite原生地繼承了Amazon AWS、Google Compute Engine,對于其他的云環(huán)境,Ignite集成了Apache JCloud,他支持大多數(shù)的云供應(yīng)商。

3.2.6.Apache Mesos

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

3.2.7.Hadoop Yarn

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

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

網(wǎng)站名稱:ApacheIgnite有哪些特性
當(dāng)前路徑:http://muchs.cn/article44/ipgiee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、企業(yè)網(wǎng)站制作、做網(wǎng)站電子商務(wù)、網(wǎng)站排名、移動網(wǎng)站建設(shè)

廣告

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

小程序開發(fā)