上一篇文章,咱们作了内存数据库的技术选型: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