日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Apache Ignite 內存速度級的分布式數據庫

 

介紹

企業正在以巨大的速度積累數據,需要大量的存儲空間。由于要存儲和處理數 TB 的數據,開發人員常常會陷入困境。 Apache Ignite 以內存為中心的分布式數據庫、緩存和處理平臺,用于事務性、分析性和流式工作負載,可以在PB級數據上享有內存級的性能。Ignite 為應用和不同的數據源之間提供一個高性能、分布式內存中數據組織管理的框架。

Ignite的一個突出特性是完全支持分布式的SQL關聯,Ignite支持并置和非并置的數據關聯。并置時,關聯是在每個節點的可用數據集上執行的,而不需要在網絡中移動大量的數據,這種方式在分布式數據庫中提供了最好的擴展性和性能。Ignite和其他關系型數據庫具有相似的行為,但是在處理約束和索引方面略有不同。Ignite支持一級和二級索引,但是只有一級索引支持唯一性。在持久化方面,Ignite固化內存在內存和磁盤中都能良好的工作,但是持久化到磁盤是可以禁用的,一般將Ignite作為一個內存數據庫來使用。

 

發展史

Apache Ignite 內存速度級的分布式數據庫

 

特性

  • 多層存儲:Apache Ignite 多層存儲實現了一種尖端的存儲架構,它將內存的性能優勢與基于磁盤的數據庫的可擴展性和持久性優勢相結合,存儲模式包括內存模式、內存+外部數據庫模式、多層數據庫模式
  • ACID兼容:存儲在Ignite中的數據,在內存和磁盤上是同時支持ACID的,使Ignite成為一個強一致的系統,Ignite可以在整個網絡的多臺服務器上保持事務。
  • SQL支持:Ignite提供了完整的SQL、DDL和DML的支持,可以使用純SQL而不用寫代碼與Ignite進行交互,這意味著只使用SQL就可以創建表和索引,以及插入、更新和查詢數據。有這個完整的SQL支持,Ignite就可以作為一種分布式SQL數據庫。
  • 鍵-值:Ignite的內存數據網格組件是一個完整的事務型分布式鍵值存儲,它可以在有幾百臺服務器的集群上進行水平擴展。在打開持久化時,Ignite可以存儲比內存容量更大的數據,并且在整個集群重啟之后仍然可用。
  • 并置處理:大多數傳統數據庫是以客戶機-服務器的模式運行的,這意味著數據必須發給客戶端進行處理,這個方式需要在客戶端和服務端之間進行大量的數據移動,通常來說不可擴展。而Ignite使用了另外一種方式,可以將輕量級的計算發給數據,即數據的并置計算,從結果上來說,Ignite擴展性更好,并且使數據移動最小化。
  • 可擴展性和持久性:Ignite是一個彈性的、可水平擴展的分布式系統,它支持按需地添加和刪除節點,Ignite還可以存儲數據的多個副本,這樣可以使集群從部分故障中恢復。如果打開了持久化,那么Ignite中存儲的數據可以在集群的完全故障中恢復。Ignite集群重啟會非常快,因為數據從磁盤上獲取,瞬間就具有了可操作性。從結果上來說,數據不需要在處理之前預加載到內存中,而Ignite會緩慢地恢復內存級的性能。
  • 機器學習:Ignite的機器學習(ML)是一套簡單、可擴展以及高效的工具,可以構建可預測的機器學習模型,而不需要昂貴的數據傳輸。
  • 多語言支持:Ignite是以JAVA語言為主進行開發的,因此可以在JVM支持的任何操作系統和架構上部署和運行

 

場景

三種主要使用場景

  • 應用程序加速和橫向擴展:使用 Ignite 作為內存緩存或部署在一個或多個外部數據庫上的內存數據網格,將現有應用程序加速 100 倍。
  • 用于HTAP 工作負載的分布式數據庫:通過將 Ignite 用作可擴展超出可用內存容量的數據庫,構建支持事務和分析工作負載的應用程序。
  • 數字集成中心:創建一個高級平臺架構,將多個后端系統和數據庫聚合到一個低延遲和共享的數據存儲中。

 

存儲模式

Apache Ignite 多層存儲實現了一種尖端的存儲架構,它將內存的性能優勢與基于磁盤的數據庫的可擴展性和持久性優勢相結合,存儲模式包括內存模式、內存+外部數據庫模式、多層數據庫模式

內存模式

基于內存計算解決方案的所有優勢。以最低延遲和最高吞吐量存儲和處理數據,整個數據集僅在內存層中可用,為了避免節點故障,建議在集群中至少保留一份數據的備份副本,適用于數據緩存、高性能計算、Web 會話緩存、實時處理連續數據流

Apache Ignite 內存速度級的分布式數據庫

 

內存+外部數據庫模式

通過將 Ignite 部署為現有基于磁盤的數據庫和后端系統之上的緩存層來加速和卸載現有數據庫。以將 Ignite 用作現有數據庫(例如 RDBMS 或 NoSQL 數據庫,例如 Apache Cassandra 或 MongoDB)之上的緩存層,Ignite 提供與 Apache Cassandra 的開箱即用集成。對于其他沒有現成集成的 NoSQL 數據庫,您可以提供自己的CacheStore接口實現。

Apache Ignite 內存速度級的分布式數據庫

 

多層數據庫模式

通常,內存緩存和數據庫提供有限的持久性能力。Ignite持久性沒有任何限制,超出可用內存容量并在重啟時跳過內存預熱,100% 的數據被持久化到 Ignite 原生持久化,相同數量或更少的數據緩存在內存中。緩存的數據越多,性能越快。應用程序可以查詢內存中和僅磁盤的記錄,透明地擴展到可用內存容量之外。由于 Ignite 可以從磁盤提供數據,因此無需在重新啟動時進行內存預熱。

Apache Ignite 內存速度級的分布式數據庫

 

分布式 SQL

對 SQL 的原生支持讓可以像使用標準 SQL 數據庫一樣使用 Ignite,Apache Ignite自帶JDBC 驅動程序、ODBC 驅動程序以及支持Java、C#、C++、Python 和其他編程語言的sql API,Ignite支持所有的DML指令,包括SELECT、UPDATE、INSERT和DELETE,它還實現了一個與分布式系統有關的DDL指令的子集。Ignite的一個突出特性是完全支持分布式的SQL關聯,Ignite支持并置和非并置的數據關聯。并置時,關聯是在每個節點的可用數據集上執行的,而不需要在網絡上移動大量的數據,這種方式在分布式數據庫中提供了最好的擴展性和性能

Apache Ignite 內存速度級的分布式數據庫

 

分布式 ACID

Ignite是一個強一致的平臺,完全支持分布式ACID事務,內存和磁盤層,都提供一樣的一致性保證。Ignite的事務,可以跨越多個節點,多個緩存(或者說表)以及多個分區。對于應用來說,樂觀鎖和悲觀鎖都是可用的,樂觀模式還支持無死鎖事務,可以在業務代碼層面避免分布式死鎖。

Ignite采用二階段提交協議,在分布式系統中,事務可能跨越多個節點,顯然,要保證所有參與節點的數據一致性是一個很大的挑戰。比如,如果一個節點故障,故障節點的事務就不能完整提交,在這類場景中,要保證數據一致性,一個廣泛使用的方法是二階段提交協議(2PC)。Ignite帶來了二階段提交協議的最快實現,另外,如果事務只涉及一個分區或者一個節點,Ignite會使用一個更快的一階段提交協議。在一個事務中,如果數據發生了變化,那么在變化提交之前,Ignite會在本地事務映射中保存一個事務的狀態,提交時,數據會被發送到相關的遠程節點,其中只有持有相關數據主副本的節點,才會參與事務。

一致性和Ignite持久化

如果使用了Ignite的原生持久化,那么所有的更新都會寫入預寫日志(WAL)文件中來保證一致性,即使事務執行期間集群或者某個節點故障,也沒有問題。WAL的目的是,以附加模式將更新傳播到磁盤,這是將數據持久化到磁盤的最快方式,如果集群或者某個節點故障,WAL提供了一個故障場景的恢復機制,集群總是可以恢復到最近成功提交的事務狀態。

一致性和第三方持久化

如果Ignite作為緩存層運行于第三方數據庫之上,比如RDBMS,Ignite仍然會保證緩存數據和外部數據的事務一致性。比如,如果RDBMS作為持久化層,Ignite會在將提交消息發給相關的集群節點之前,將事務寫入數據庫,這樣的話,如果在數據庫層發生事務故障,Ignite仍然會將回滾消息發給所有的相關節點,從而保持兩者之間的數據一致性

 

架構

 

Apache Ignite 內存速度級的分布式數據庫

 

  • 持久化層:Ignite同時支持原生持久化和用第三方存儲做持久化,比如RMDBMS,HDFS等。雖然Ignite有以內存為中心的存儲,但是畢竟內存中數據在節點出現故障的時候都有丟失的可能性。 因此持久化層為Ignite提供了故障恢復的能力。另外有了持久化能力,可以讓冷熱數據更合理使用內存。比如在內存足夠情況下,數據可以全部加載到內存中。 而當內存緊張時,可以只加載熱數據至內存中,冷數據就留在硬盤上。
  • Ignite內存存儲層:這一層可以算是Ignite的核心層了。數據可以通過不同分區,復制模式分布在Ignite集群所有節點,部分節點或者本地節點。通過數據分區和復制,比如1主多備的方式,可以提高數據的可用性,即便主數據節點故障后,集群中的備數據節點可以切換為主節點繼續提供讀寫服務。 同時備節點也可以作為只讀節點使用,提高數據讀操作的吞吐量。Ignite還利用Java堆外內存存儲數據和索引,減少了JVM的垃圾回收次數和時間,提供了更高效的操作。
  • API接口層: 豐富多樣的接口支撐Ignite向上提供了諸如分布式數據庫,數據網格和計算網格的能力。Key/Value+transaction,可以把Ignite當做和redis,Memcached一樣的緩存使用。 而對SQL ANSI-99的兼容,有可以把Ignite當做一個分布式數據庫來用。 除了數據能力,Ignite還允許你通過Compute Grid的接口提交計算任務,充分利用集群的計算資源。Ignite還支持把計算任務部署在和計算數據所在的相同節點上,減少網絡傳輸和數據的序列化開銷,提高計算效率。 流處理,機器學習網格,服務網格,消息隊列等,Ignite也同時提供支持。

結論

Apache Ignite 是一個專注于分布式內存計算的開源項目。Ignite 將數據存儲在內存中,分布在提供快速數據訪問的多個節點上。將數據異步傳播到持久層的選項是一個額外的優勢。此外,與各種數據庫集成的能力也使 Ignite 成為開發人員使用它進行數據庫緩存的簡單選擇。 Apache Ignite整體來說,它基本把現在分布式的一些概念都集成了,包含分布式存儲、分布式計算、分布式服務、流式計算等等。而且,它對Java語言的支持,與JDK能夠很好的整合,能夠很友好的兼容JDK的現有API,當你開啟一個線程池,你不需要關系是本地線程池還是分布式線程池,只管提交任務就行。Apache Ignite在與RDBMS、Hadoop、Spark、Kafka等傳統關系型數據庫和主流大數據套件的集成,提供了非常靈活好用的組件API。

分享到:
標簽:Apache Ignite
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定