美文网首页
ignite实践踩坑(4)-数据一致性

ignite实践踩坑(4)-数据一致性

作者: 虾餃 | 来源:发表于2020-04-20 09:11 被阅读0次

笔者所有文章第一时间发布于:
hhbbz的个人博客

数据一致性的简要说明

说起一致性,我们大概第一反应就是想起分布式系统的CAP定理以及其相关定义,简单来说就是,一致性、可用性和分布式,三者之间最多只可保证两者的完整性。那有了这个思想前提,就可以来聊一聊ignite在数据一致性上面的部分设计。

问题场景说明

跑120w数据,在ignite里面的逻辑是读取localNode的数据,去put到一个集群缓存中。然后我有三个节点,当我对这三个节点个字执行一次这种操作之后,发现落盘的数据总是缺个十多条几十条。我业务逻辑中有日志记录,证实了业务代码的处理是没丢数据的。

在ignite中保证一致性

ignite是一个高可用高性能的内存数据库,所以其默认策略也是优先保证高可用和高性能为主,然后才是一致性。为了保证这种策略的的运行,ignitem默认开启了从备份读数据,这样就是提高了性能,弱化了一致性的体现。恰巧主备的默认读写策略是异步主从双写,从备份读的,这样也就导致了如果你需要保证严格的一致性,就需要把从备份读关闭。

代码配置修正

针对上述情况,我们可以选择两种解决方式。

  1. 把备份关掉
        CacheConfiguration<String,E> cacheConfiguration = new CacheConfiguration<>();
        cacheConfiguration.setBackups(0);
  1. 把从备份读取数据给关掉
        CacheConfiguration<String,E> cacheConfiguration = new CacheConfiguration<>();
        cacheConfiguration.setBackups(1);
        //设置备份的情况下,该属性要设置成false,否则会出现数据不一致
        cacheConfiguration.setReadFromBackup(false);

特别备注说明一个纠缠很久的坑 Faild to read WAL record at position xx size xx

在ignite连续跑大批量数据,会与jvm做大量的堆内堆外数据交互,所以对jvm的参数的优化是必不可少的。如果因为业务代码效率跟不上,则会堵塞ignite的正常交互,然后会导致wal文件记录某个地方速度慢了,又继续写入了什么触发的,就会报错Faild to read WAL record at position xx size xx。

这里我建议大家都使用gridgain社区版的ignite版本,上面的问题我在开源版2.7.0中遇到,换成社区版8.7.12之后,情况好了非常多,可用性也提高了很多。

更换ignite社区版本

相关文章

  • ignite实践踩坑(4)-数据一致性

    笔者所有文章第一时间发布于:hhbbz的个人博客 数据一致性的简要说明 说起一致性,我们大概第一反应就是想起分布式...

  • ignite实践踩坑(2) 节点集群

    笔者所有文章第一时间发布于:hhbbz的个人博客 Ignite的天然支持分布式 Ignite具有非常先进的集群能力...

  • ignite实践踩坑(3) 数据平衡分布

    笔者所有文章第一时间发布于:hhbbz的个人博客 为什么需要数据平衡分布 在一个集群的环境中,我们往往希望能更好的...

  • ignite实践踩坑(1) 简介与持久化

    笔者所有文章第一时间发布于:hhbbz的个人博客 Ignite是什么 一个以内存为中心的分布式数据库、缓存和处理平...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • ClassLoader踩坑实践

    摘要 最近在项目中需要实现ClassLoader动态加载类的功能,虽然以前在资料上没少见过ClassLoader的...

  • easyexcel踩坑实践

    笔者最近在写一个业务报表的通用导出组件,目前内部版本正在开发中,设计初步方案已经完成,核心代码完成之后开始测试,但...

  • postMessage踩坑实践

    前言 在低代码编辑器中进行页面预览常常不得不用到iframe进行外链的url引入,这就涉及到了预览页面与编辑器页面...

  • IGNITE应用实践

    前言:Ignite是一个以内存为中心的数据平台,具有数据强一致、高可用、支持标准SQL的特性。Ignite从201...

网友评论

      本文标题:ignite实践踩坑(4)-数据一致性

      本文链接:https://www.haomeiwen.com/subject/nygivhtx.html