最近在一個新的項目技術選型的時候看到了Ignite。Ignite作爲一個高性能,分佈式內存計算和事務平臺,解決了大規模、大數據量、高併發的企業級應用的痛點,是一個非常有潛力的技術。

一、Ignite的特點

1、多級存儲

Ignite對多級存儲的支持主要有三種模式:內存,內存+數據庫,內存+原生持久化。

內存: 僅使用內存存儲數據,爲了保證數據不丟失,應該保證數據至少有一份備份。

內存+數據庫: 在數據庫上層用Ignite作爲緩存,這裏的數據庫可以是傳統的數據庫,例如MySQ,Oracle等。在這裏Ignite的作用類似於我們常用的Ehcache,Guava Cache等,但是Ignite是分佈式的且更加強大。

內存+原生持久化: Ignite本身支持持久化,可以將數據全部持久化到磁盤,同時將全部或者部分熱點數據加載到內存中。

2、持久化

Ignite本身的持久化支持分佈式,事務和SQL語句,具體持久化過程如下圖所示:

持久化

持久化的核心在於Write-Ahead Log (WAL),其目的在儘快將數據更新到磁盤,並且保證在整個集羣出現問題時能夠恢復數據。

3、分佈式SQL

Ignite支持關係型數據庫中的SELECT, UPDATE, INSERT, DELETE操作,甚至還支持JOIN操作。上面我們說到Ignite有三種不同模式,每種模式對SQL的支持不一樣。

分佈式SQL

內存模式: 在這種模式下支持上述的各種SQL操作,且性能非常好。

內存+原生持久化模式 :這種模式下支持上述的各種SQL操作,且並不需要把全部數據加載到內存中,Ignite的SQL引擎支持內存和硬盤的聯合查詢。

內存+數據庫模式: 這種模式不支持Ignite和數據庫的聯合查詢,也就是說,對於一條語句查詢或者更新,Ignite的SQL引擎不會分別從Ignite內存和數據庫中取出滿足條件的數據並且聚合後返回,這是目前做不到的。除非將外部數據庫的數據全部加載到Ignite中。

4、分佈式Key-Value

Ignite可以作爲一個傳統的K-V存儲使用,類似於我們之前常用的Redis,這裏就不再贅述。

Key-Value存儲

5、分佈式事務

Ignite 支持分佈式事務,無論是做緩存還是數據持久化到硬盤都可以保證數據的一致性。

分佈式事務

Ignite支持多種分佈式事務方式,主要有兩段式提交和三段式提交以及Ignite本身的WAL。兩段式和三段式是分佈式事務常用的兩種方式,不再贅述。

這裏簡單說下Ignite本身的WAL方式,WAL是Write-Ahead Log的簡稱,數據在持久化到磁盤的時候會先寫到日誌文件裏面,然後再更新到磁盤。這種方式只支持Ignite原生的持久化方式,如果是內存+外部數據庫的方式,只能選擇兩段式或者三段式事務。

6、集中處理

在傳統的關係型數據庫或者非關係中數據庫中,我們通常將數據從數據庫取到客戶端應用進行處理,而Ignite採用了一種不同的方式,將複雜的計算或者是SQL直接放在Ignite集羣的節點上處理,將執行的結果返回給客戶端應用。這樣就避免了大量的數據在網絡上傳輸。

Ignite集中處理

7、機器學習

Ignite爲構建機器學習模型提供了一套簡單,彈性和有效的工具集,且不需要做數據轉換。機器學習不熟悉,這裏就不班門弄斧了。

Ignite支持機器學習

二、Ignite使用場景

根據上面Ignite的特點,Ignite適合的使用場景主要有幾種:

1、作爲緩存或者數據庫使用

Ignite可以作爲應用的緩存層甚至是直接作爲數據庫使用,因爲Ignite不僅支持數據的內存存儲,還支持持久化和事務,甚至支持SQL查詢。如下圖所示架構:

Ignite作爲緩存

應用或者是服務先將數據存儲到Ignite集羣中,然後在根據需要持久化到磁盤,寫到其他數據庫,甚至是抽取到大數據平臺,在這個架構中Ignite對上可以滿足應用和服務的高速訪問,對下可以支持多種數據持久化存儲的需要。

2、數據和計算中心

Ignite可以作爲一個高性能的數據計算中心,支持複雜的計算和分析,同時也可以作爲一個數據集成總線,聚合不同來源的數據,然後做分析處理。因爲Ignite是基於內存處理的,所以處理速度會很快。

三、總結

簡單總結一下,Ignite以內存爲中心的架構設計在性能方面有很強的表現,可以作爲緩存爲應用和服務加速,同時支持原生持久化的分佈式內存數據庫、事務和Key-Value存儲、分佈式計算框架、易於與各種技術集成、支持機器學習等,還提供了完整的多語言API支持。

Ignite融合了分佈式、關係型數據庫、高速緩存的特點,對於目前的高併發、大數據量的互聯網級應用提供了強有力的支撐,在技術選型時可以綜合考慮,採用Ignite集羣來提升系統性能。

作者丨攻城獅Bilbo

來源丨https://www.toutiao.com/i6813016271303475723

dbaplus社羣歡迎廣大技術人員投稿,投稿郵箱:[email protected]

從過去40年至今,數據庫的形態基本經歷了傳統商業數據庫、開源數據庫到雲原生數據庫的演進過程。雲時代下數據庫將如何革新與創變?企業核心數據庫遷移與建設如何安全平穩展開?來 Gdevops全球敏捷運維峯會北京站 尋找答案:

  • 《All in Cloud 時代,下一代雲原生數據庫技術與趨勢》 阿里巴巴集團副總裁/達摩院首席數據庫科學家 李飛飛(飛刀)

  • 《AI和雲原生時代的數據庫進化之路》騰訊數據庫產品中心總經理 林曉斌(丁奇)

  • 《ICBC的MySQL探索之路》 工商銀行軟件開發中心 魏亞東

  • 《民生銀行在SQL審覈方面的探索和實踐》 民生銀行資深數據庫專家 李寧寧

  • 《OceanBase分佈式數據庫在西安銀行的落地和實踐》 螞蟻金服P9資深專家/ OceanBase 核心負責人 蔣志勇

  • 《金融行業MySQL高可用實踐》 愛可生技術總監 明溪源

讓我們 9月11日在北京 共同眺望數據庫發展變革更長遠的未來!

相關文章