数据稽核场景

基于ES双中心使用场景,需要近实时周期性验证2个ES索引双写的数据差异,并采取措施保证数据的一致性。

数据稽核方案

由于ES一般承载的数据量较大,无法直接查询到内存中进行明细比对,采用的方案如下:根据业务时间字段查询2个集群索引相同时间段内数据总量,并计算对比所有数据关键字段的CRC32累计值。对比结果有差异的时间段不断细分,重复进行数据量及CRC32比对,最终在内存中进行小数据量明细比对,找出不一致的数据。

数据稽核步骤

  1. 获取指定时间范围内索引数据时间段划分类型
    查询并统计指定时间范围内的索引数据,找出时间最大和最小值,计算时间差。时间段类型包括:天、小时、分钟、秒,时间差超过1天的按照天类型,超过1小时但不超过1天的按照小时类型,超过1分钟但不超过1小时的按照分钟类型,超过1秒但不超过1分钟的按照秒类型。
  2. 使用date_histogram将指定时间段索引数据细分
    查询并按时间段类型聚合,使用date_histogram分别获取2个索引各个时间段内的数据总量。
  3. 比对2个索引相同时间段内的数据总量 比对2个索引相同时间段内的数据总量,若不一致则不再进行CRC32比对
  4. 计算并比对数据总量相同的时间段的CRC32值
    使用scroll查询方式,查询数据量相同的时间段内明细数据并按指定字段排序,通过CRC32累计计算指定字段值,比对最终的CRC32值。若CRC32值相同,则认为该时间段内数据一致。
  5. 汇总数据量不同及CRC32值不同的时间段,重复进行2、3、4步 按照天、小时、分钟、秒的顺序细化时间段,重复进行2、3、4步。
  6. 较小数据量进行内存明细比对,存储比对结果供后续处理
    单个时间段内数据量小于10000时,可以直接查询至内存中进行双向比对,得到明细差异结果并存储。
  7. 周期性进行1-6步 设置定时任务,如每天凌晨对前一天数据进行稽核比对。或每10分钟对相隔10分钟前的数据进行对比(确保对比时间数据不再变动)。若要进行同步,可针对差异数据进行双中心数据更正或补录。

测试环境

测试程序运行硬件环境:windows7 CPU 2.2GHZ 内存8G
测试程序运行软件环境:jdk1.8、springboot1.4.1
测试环境容器集群:es-test
索引:index_2019_08_19
比对索引:index_2019_08_17
时间字段:startTime
唯一主键:traceId、id组合

测试方式

  1. 新建索引index_2019_08_17,结构与index_2019_08_19保持一致
  2. 通过reindex方式将index_2019_08_19数据写入index_2019_08_17
  3. 修改或删除index_2019_08_17、index_2019_08_19中部分数据
  4. 按照ES数据稽核步骤进行比对

测试结果

  1. 稽核速度

单个索引总数据量230W左右,2个索引数据各差异1条,稽核完成时间平均在60s以内

  1. 资源使用

稽核过程中使用2个线程池,每个线程池各10个线程,中间比对线程2个,最多22个线程,CPU使用率20%-40%之间,内存使用200M-500M之间。

总结

ES数据稽核功能可以实现,但需注意一些问题

  • 业务数据中必须有唯一主键或联合主键
  • 制定稽核执行周期时,需考虑数据延迟导致的稽核不准确问题,保证稽核时间范围内,数据无变化

ES双中心数据稽核(同步)相关推荐

  1. 自建es集群数据迁移同步到腾讯云

    用户自建ES集群<多节点>如何通过snapshot+cos的方式实现数据到腾讯云ES的迁移恢复 使用COS进行数据迁移使用场景也非常多.通过上一小结的理解,我想大家更理解了这个工具的使用诀 ...

  2. DB与ES混合应用之数据实时同步

    一.技术背景 DB与ES本质上是属于不同应用领域的数据库产品,混合应用在一起主要面临2个问题 : 同步实时性,数据在DB更新之后,需要多久才能更新到Elasticsearch,多久的时间是应用系统可以 ...

  3. ES和MySQL数据同步(简略版)

    一.在docker配置elasticsearch和kibana 1.注:elasticsearch和kibana的版本要一致 elesticsearch --拉取镜像 docker pull dock ...

  4. es与mysql数据同步 (go-mysql-es)

    es与mysql数据同步 (go-mysql-es) 简介 go-mysql-elasticsearch是一款开源的高性能的Mysql数据同步ES的工具,其由go语言开发,编译及使用非常 简单.go- ...

  5. 浅谈同城双中心的网络部署模型

    企业建设数据中心时,出于灾备的考虑,会建设两个甚至多个数据中心.例如我们经常提到的"两地三中心",即同城双中心+异地中心. 同城双中心是指在同城或邻近城市建立两个可独立承担业务的数 ...

  6. 实战!Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步!

    数据同步一直是一个令人头疼的问题.在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例如从多个表将数据查出来,再汇总处理,再插入到相应的地方. 但是随着业务 ...

  7. 苏宁智能 BU大数据中心数据治理团队负责人韦真:数据治理“三字经”,超实用!...

    中生代技术 链接技术大咖,分享技术干货 全文:4700字 " 随着移动互联网和大数据的蓬勃发展,"数据即资产"的理念深入人心.大数据已发展成为具有战略意义的生产资料,在各 ...

  8. 大数据时代,数据实时同步解决方案的思考—最全的数据同步总结

    1. 早期关系型数据库之间的数据同步 1).全量同步 比如从oracle数据库中同步一张表的数据到Mysql中,通常的做法就是 分页查询源端的表,然后通过 jdbc的batch 方式插入到目标表,这个 ...

  9. 利用redissyncer实现数据双向同步

    不知不觉[数据迁移专题]已经进行了两期,在先前<跨越异构鸿沟,Redis 迁移同步过程中的挑战与解决方案>和<在线数据迁移,数字化时代的必修课>中,我们为大家介绍了数据迁移挑战 ...

最新文章

  1. XamarinSQLite教程创建数据库
  2. Spring Boot——集成七牛云OSS对象存储SDK解决方案
  3. JD商家后台管理的细节
  4. Struts2中的ActionContext
  5. 苏泊尔搭载华为鸿蒙系统,华为鸿蒙打算在一年内跨过生死线,拿下16%的市场份额...
  6. 国内高速前端 Unpkg CDN 替代方案
  7. html5+css3第一次作业_“台风爷爷,让我作业飞走!”南京小学生写的诗都这么逆天了?...
  8. Linux驱动(6)--关于uboot
  9. Redis作者谈Redis应用场景
  10. HTTP性能测试工具wrk安装及使用
  11. 向“3+1” SQLServer2008集群增加磁盘
  12. tomcat,tomcat7配置https
  13. 自定义竖着的SeekBar
  14. AD(altium designer)15原理图与PCB设计教程(二)—— 电路原理图设计
  15. 通达OA清空admin管理员账号的密码
  16. ug12对计算机配置要求,ug12.0对电脑配置要求
  17. linux格式化命令,Linux怎么格式化磁盘啊?
  18. 触屏java版象棋下载 游戏下载安装,天天象棋下载手机版
  19. 储存卡格式化怎么恢复?给力的操作!
  20. PX4 FMU [17] stabilize

热门文章

  1. 算数运算符及算数表达式
  2. 关于Qos中常用的CIR、PIR、CBS、PBS、EBS的解释以及用法关系
  3. 论文快速阅读的方法总结_20180503
  4. Apache Griffin调试各种报错总结
  5. c语言倒序输出英文字母表音标,C语言常见英语词,带音标.doc
  6. 走出腾讯:一个80后技术人的信仰
  7. CSP-J 2020 第一轮 游记
  8. alfafile中转站免费_中转站全集免费在线观看-手机看中转站HD完整版 - 穷TV_院线大片影视大全...
  9. 刚毕业入职一个多月就被裁,赔偿半个月工资两万四!
  10. python中判断x是奇数的表达式_判断整型变量x是奇数的表达式是哪个