文档章节

Ignite 2.1.0新特性Durable Memory学习

Jeff_JYM
 Jeff_JYM
发布于 2017/09/11 17:05
字数 880
阅读 31
收藏 0

Ignite自带存储 vs 第三方持久化

Apache Ignite Native Persistence has the following advantages over 3rd party stores (RDBMS, NoSQL, Hadoop) that can be used as an alternative persistence layer for an Apache Ignite cluster:

  • Ability to execute SQL queries over the data that is both in memory and on disk which means that Apache Ignite can be used as a memory-optimized distributed SQL database.
  • No need to have all the data and indexes in memory. The Ignite Persistence allows storing a superset of data on disk and only most frequently used subsets in memory.
  • Instantaneous cluster restarts. If the whole cluster goes down there is no need to warm up the memory by preloading data from the Ignite Persistence. The cluster becomes fully operational once all the cluster nodes are interconnected with each other.
  • Data and indexes are stored in a similar format both in memory and on disk that helps to avoid expensive transformations while the data sets are being moved between memory and disk.
  • An ability to create full and incremental cluster snapshots by plugging-in 3rd party solutions.

使用

打开这个Ignite native persistence的开关只需要传一个参数PersistentStoreConfiguration 到IgniteConfiguation中:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
  <!-- Enabling Apache Ignite Native Persistence. -->
  <property name="persistentStoreConfiguration">
    <bean class="org.apache.ignite.configuration.PersistentStoreConfiguration"/>
  </property>

  <!-- Additional setting. -->
 
</bean>

集群在启动过程中不能修改数据,否则有些节点被修改了有些还没有,就会出问题,这里需要控制,调用

// Activating the cluster once all the cluster nodes are up and running.
ignite.active(true);

默认文件路径为:

${IGNITE_HOME}/work

也可以用PersistentStoreConfiguration.setPersistentStorePath(...)来修改这个路径。

 

Write-Ahead Log (WAL)

当写入文件时,并不是实时更新的,应为会影响性能,所以会先加到WAL的尾端。

WAL的目的是为了将对文件的更新延迟,并且能够从单点故障或者整个集群故障中恢复,集群可以恢复到最新的成功提交的事务那里。

WAL分成好多段,然后填入的时候是按序列填入的,当地一个填满,这部分内容会被拷到WAL Archive并且保留被方法PersistentStoreConfiguration.walHistorySize定义好的一段时间。当第一段正在被拷贝到Archive的时候,第二段就变成活跃的WAL文件了,会接受从应用端过来的更新。默认会有十段。可以用PersistentStoreConfiguration.setWalSegmentSize来设置。

WAL是Ignite本地存储的精髓部分。主要角色是1尽可能快的更新磁盘,2恢复到一个稳定的状态。

 

CheckPointing

鉴于WAL的天性,它会持续增长并且一个集群从WAL中全部恢复可能需要大量的时间。为了解决这个,Ignite本地存储和持久内存支持Checkpoint过程。

checkpoint是一个过程,拷贝脏页从RAM到文件,脏页的定义是只更新了RAM但是还没到文件。(an update was just appended to the WAL)

这个过程可以实现保证文件中的页是最新的状态,允许从WAL Archive中移除过期的WAL段。

Checkpointing is triggered periodically depending on the frequency set in your Native Persistence configuration or other parameters.

 

事务性保证

Ignite本地存储是ACID,分布式store。每个事务先更新到WAL。恢复也不会漏下。

 

生产调优

如果一个集群跑在Unix环境然后本次存储用的是SSD,那么pageSize设置成4KB而不是2KB,那么checkPoint的效率会提升三倍。

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
   ...		
   <property name="memoryConfiguration">
    		<bean class="org.apache.ignite.configuration.MemoryConfiguration">
        		<!-- Setting the page size to 4 KB -->
            <property name="pageSize" value="#{4 * 1024}"/>
        </bean>
    </property>
    ...
</bean>

 

上生产需要考虑的问题

  1. 机器I/O是否能够承受
  2. 需要SSD,需要多大的磁盘?
  3. 怎么判断多节点全部active了
  4. 数据需要调整或者脏了
    1. 可以把{IGNITE_HOME}/work路径下的文件全部删掉,启动loader重新生成一遍

 

 

引用:https://apacheignite.readme.io/docs/distributed-persistent-store

© 著作权归作者所有

共有 人打赏支持
Jeff_JYM
粉丝 0
博文 6
码字总数 2872
作品 0
深圳
程序员
Apache Ignite 2.6.0 版本发布,紧急问题修复

Apache IGNITE 2.6 已发布,更新如下 特性和改进 Apache Ignite Linux packages 2.6 update [#IGNITE-8807] Windows WSL configuration has to be added to Ignite configs [#IGNITE-8804] ......

李玉珏
07/19
0
0
Apache Ignite 2.5.0 版本发布,千级节点伸缩性

Apache Ignite 2.5: 千级节点伸缩性 Apache Ignite的用户通常知道的两个关键点是-扩展性和性能。在很多分布式系统的整个生命周期中,通常会不停地改进性能,而对扩展性相关的改进次数,会比较...

李玉珏
06/01
0
0
Apache Ignite剖析

1.概述   Apache Ignite和Apache Arrow很类似,属于大数据范畴中的内存分布式管理系统。在《Apache Arrow 内存数据》中介绍了Arrow的相关内容,它统一了大数据领域各个生态系统的数据格式,...

smartloli
03/11
0
0
IGNITE TROUBLESHOOT

H2 Console 设置系统变量 set IGNITEH2DEBUGCONSOLE=true, 启动IGNITE的时候会自动弹出一个h2 console的浏览器, 可以看到建立的索引和具体的数据 参考 https://apacheignite.readme.io/docs/...

zhanjia
06/26
0
0
Apache Ignite 高危漏洞预警:攻击者可执行任意代码

Apache Ignite 的开发团队近日在 Apache 邮件列表上发布了一个高危漏洞(CVE-2014-0114)预警,所有 Ignite 2.4 及更早之前的版本都会受到影响。 据悉,Apache Ignite 使用了 commons-beanut...

王练
06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

maven坐标和依赖

一、maven坐标详解 <groupId>com.fgt.club</groupId><artifactId>club-common-service-facade</artifactId><version>3.0.0</version><packaging>jar</packaging> maven的坐标元素说......

老韭菜
今天
1
0
springmvc-servlet.xml配置表功能解释

问:<?xml version="1.0" encoding="UTF-8" ?> 答: xml version="1.0"表示是此xml文件的版本是1.0 encoding="UTF-8"表示此文件的编码方式是UTF-8 问:<!DOCTYPE beans PUBLIC "-//SPRING//......

隐士族隐逸
今天
1
0
基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
1
0
12.17 Nginx负载均衡

Nginx负载均衡 下面的dig看到可以返回2个IP,就是解析出来的IP,这样我们可以做负载均衡。 dig www.qq.com 1.vim /usr/local/nginx/conf/vhost/fuzai.conf 2.添加如下配置 upstream qq //定义...

芬野de博客
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部