上一篇文章,咱們作了內存數據庫的技術選型:html
本文中,咱們繼續深刻研究Apache Ignite,同時分享一些咱們.Net的編碼實踐。數據庫
首先,Apache Ignite是一個內存數據組織是高性能的、集成化的以及分佈式的內存平臺,他能夠實時地在大數據集中執行事務和計算,和傳統的基於磁盤或者閃存的技術相比,性能有數量級的提高。apache
其中:編程
Data Grid:Ignite內存數據網格是一個內存內的鍵值存儲,他能夠在分佈式集羣的內存內緩存數據。
它經過強語義的數據位置和關係數據路由,來下降冗餘數據的噪聲,使其能夠節點數的線性增加,直至幾百個節點。
Ignite數據網格速度足夠快,通過官方不斷的測試,目前,他是分佈式集羣中支持事務性或原子性數據的最快的實現之一。緩存
SQL Grid:內存SQL網格爲Apache Ignite提供了分佈式內存數據庫的功能,它水平可擴展,容錯而且兼容SQL的ANSI-99標準。 SQL網格支持完整的DML命令,包括SELECT, UPDATE, INSERT, MERGE以及DELETE。 同時支持分佈式SQL Join關聯架構
RDBMS集成: Ignite支持與各類持久化存儲的集成,它能夠鏈接數據庫,導入模式,配置索引類型,以及自動生成全部必要的XML OR映射配置和Java領域模型POJO,這些均可以輕易地下載和複製進本身的工程。
Ignite能夠與任何支持JDBC驅動的關係數據庫集成,包括Oracle、PostgreSQL、MS SQL Server和MySQL併發
Apache Ignite 的功能特性有:運維
Apache Ignite具備很是先進的集羣能力,部署很是靈活。異步
上面大體介紹了Apache Ignite的架構和功能特性,如今咱們以代碼示例的方式,分享一下作的技術原型驗證:
1. 啓動Apache Ignite
代碼中經過調用Ignition.Start()啓動一個Ignite節點。
直接執行apache.Ignite.exe也能夠啓動一個Ignite節點,其內部引用了Apache.Ignite.Core.dll,調用了Ignition.Start()方法
2. 建立指定的緩存區域
3. 數據寫入緩存
4.數據查詢
5. 數據關聯查詢
6.查詢指定的字段
7.全文搜索
8. Apache Ignite集羣部署
節點平等
Ignite沒有master節點或者server節點,也沒有worker節點或者client節點,按照Ignite的觀點全部節點都是平等的。可是開發者能夠將節點配置成master,worker或者client以及data節點。
自動發現機制
Ignite節點之間會自動感知,集羣可擴展性強,不須要重啓集羣,簡單地啓動新加入的節點而後他們就會自動地加入集羣。這是經過一個發現機制實現的,他使節點能夠彼此發現對方,Ignite默認使用TcpDiscoverySpi經過TCP/IP協議來做爲節點發現的實現,也能夠配置成基於多播的或者基於靜態IP的,這些方式適用於不一樣的場景。
部署模式
Ignite能夠獨立運行,也能夠在集羣內運行,也能夠將幾個jar包嵌入應用內部以嵌入式的模式運行,也能夠運行在Docker容器以及Mesos和Yarn等環境中,能夠在物理機中運行,也能夠在虛擬機中運行,這個普遍的適應性是他的一個很大的優點。
配置方式
Ignite的大部分配置選項,都同時支持經過基於Spring的XML配置方式以及經過Java代碼的編程方式進行配置,這個也是個重要的優勢。
9. 客戶端和服務端
Ignite中各個節點是平等的,可是能夠根據須要將節點配置成客戶端或者服務端,服務端節點參與緩存,計算,流式處理等等,而原生的客戶端節點提供了遠程鏈接服務端的能力。Ignite原生客戶端可使用完整的Ignite API,包括近緩存,事務,計算,流,服務等等。
代碼以Client模式啓動Ignite
Client/Server架構,帶來了很大的問題!!
10. Apache Ignite REST API
Apache Ignite 提供了Restful API,支持對緩存的讀、寫、執行任務、獲取各種指標等。
啓用HTTP鏈接:將libs\optional\ignite-rest-http 拷貝到libs\ignite-rest-http便可。
http://localhost:8080/ignite?cmd=version
Get or create cache
http://localhost:8080/ignite?cmd=getorcreate&cacheName=partionedCache
Add
http://localhost:8080/ignite?cmd=add&key=newKey&val=newValue&cacheName=partionedCache
Get
http://localhost:8080/ignite?cmd=get&key=newKey&cacheName=partionedCache
SQL Query
http://localhost:8080/ignite?cmd=qryexe&type=Person&pageSize=10&cacheName=Person&arg1=1000&arg2=2000qry=salary+%3E+%3F+and+salary+%3C%3D+%3F
以上就是整個Apache Ignite的技術分享。
周國慶
2017/8/26