Apache Ignite [java] [01]-缓解数据库压力


关于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

 

附件:

数据库文件

项目

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM