文档章节

Ignite 2.1.0新特性Durable Memory学习

Jeff_JYM
 Jeff_JYM
发布于 2017/09/11 17:05
字数 880
阅读 39
收藏 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.1.0 版本发布,全新的持久化存储

社区宣布,Apache Ignite 2.1.0版本正式发布。 这个版本包括了一个捐赠来的全新特性-Ignite持久化存储,他具有完全的内存持久化架构,使得应用同时具有基于内存的高性能以及基于磁盘的持久化...

李玉珏
2017/07/28
1K
6
MyBatis Ignite 1.0.6 发布,MyBatis 缓存插件

MyBatis Ignite 1.0.6 发布了,MyBatis Ignite 是 MyBatis 的缓存插件。 本版本主要是将 Apache Ignite 更新至 2.1.0 和 MyBatis 更新至 3.4.5. 完整内容请查看发布说明和发行首页 下载地址:...

两味真火
2017/08/23
1K
4
Apache Ignite 2.5.0 版本发布,紧急问题修复

特性和改进 Apache Ignite Linux packages 2.6 update [#IGNITE-8807] Windows WSL configuration has to be added to Ignite configs [#IGNITE-8804] Support reuse of already initialized......

李玉珏
07/19
0
0
Apache Ignite vs Apache Spark

出于我前面的贴子大赞了 Apache Ignite 的基于内存的文件系统和缓存功能,我将总结一下我将总结一下 Ignite 和 Spark 的主要区别。我发现这样的问题被重复提出。这很容易回答,因此不必在网上...

oschina
2015/05/03
8.5K
15
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
950
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
38分钟前
12
3
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部