关于Apache Ignite 的教程,网上已经有翻译的,
https://www.zybuluo.com/liyuj/note/230739
上面有详细的介绍。
本系列是以案例共同学习,本人能力有限,不足之处欢迎指点
项目比较简陋,只供学习。。。
ignite版本是1.5.0
jdk版本是1.7以上
一.安装
1.如果需要独立运行ignite,则去官网下载:
http://mirrors.hust.edu.cn/apache//ignite/1.5.0.final/apache-ignite-fabric-1.5.0.final-bin.zip
在指定目录下解压后,添加IGNITE_HOME环境变量指向安装文件夹。
2.在maven添加依赖
<properties>
<ignite.version>1.5.0.final</ignite.version>
</properties>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-indexing</artifactId>
<version>${ignite.version}</version>
</dependency>
ignite-core是必需的,ignite-spring是spring的XML配置,ignite-indexing是sql查询。
二.服务器/客户端
对于Ignite服务器和客户端,区别在于服务器是参与数据存储,流计算等等逻辑,而客户端是只是连接服务器。不过服务器和客户端的ignite是对等的。
默认模式是服务器启动,如果需要客户端需要配置指定。
1.如果使用独立运行ignite,在安装文件夹中的bin目录下执行。windows系统执行bat,linux执行sh。启动的时候默认加载config/default-config.xml,也可以指定需要加载的配置文件
2.如果调试启动,显示加载 Ignite ignite = Ignition.start("config/default-config.xml");
也可以通过配置
IgniteConfiguration cfg = new IgniteConfiguration();
Ignite ignite = Ignition.start(cfg);
类进行设置,然后启动
三.缓存
缓存提供三种模式:本地,分区,复制。
缓存在启动Ignite服务器节点的时候,可以通过xml配置和CacheConfiguration
类配置。
注意的是不需要在集群中每个节点配置缓存xml,Ignite会根据集群自动分配。
Ignite缓存查询除了正常的存储查询API,还提供了SQL查询,文本查询,基于谓词的扫描查询。
SQL查询中的关联查询,如果想多个关联的缓存,而且都是分区模式的话,一定要确保缓存之间,关联的键是并置的(后面例子具体展示)
四.案例场景
假设一个现有销售系统中,存在表
客户资料表 Customer【CustomerID(编号),CustomerName(名称)】
产品基础表 Product【ProductID(编号),productName(名称),price(价格)】
销售单表头 Order_H【OrderID(订单号),CustomerID(客户编号),OrderDate(订单日期),OrderState(订单状态),SumMoney(总金额),UpdateDate(修改时间)】
销售单表体 Order_D【Guid,OrderID(订单号),ProductID(编号),Pcount(数量),PMoney(金额)】
随着业务量庞大起来,一部分人需要不断的查询分析销售订单情况,及时调整销售策略。在不影响原来单据业务的流畅度的情况下,加快分析时间。
这里整个流程就是把销售系统中的需要查询的表导入到缓存中,缓解对关系型数据库的压力。然后定时触发更新订单数据到缓存,使用缓存查询分析数据。
Customer,Product属于基础数据使用,变更比较少:重复模式
Order_H,Order_D由于数据量比较大故使用:分区模式
五.实现
1.ignite节点启动后,通过jdbc,把需要加载的表缓存到ignit
2.启动定时器,定时更新缓存数据。
3.通过客户端模式,查询分析数据。
Example1_Server是服务端
Example1_SQL作为连接查询客户端
JdbcSource需要设置jdbc—url
附件: