什么是数据异构?简单讲,就是将数据进行异地数据异构存储。

数据异构

服务市场使用 BinLake(京东 MySQL 的 Binlog 日志实时采集、统一分发、消息订阅和监控服务)进行数据异构,即通过订阅 MySQL 的 Binlog 日志,通过接收 JMQ 进行数据异地构建存储。

数据异构主要有两种方式,一种是顺序消费、另一种是并行消费。其中,在进行订单、订购的数据异构时是要求保证严格的顺序性的,因为并行消费是无法保证订单的先后顺序的,所以可能造成数据不一致。

但顺序消息的问题主要是单点消费效率慢的问题,以及消费出了问题就会造成阻塞,之前使用服务器进行消费,通过 ip 限制保证单点,后期切换到流式计算平台(strom/flink)进行处理,流式计算在并行写 es 和 jimdb 有天然的优势,但如果异常情况下出现写操作失败,对于 JMQ 的重试系统要做好幂等操作的处理。

订单数据同构

订单数据为顺序消费,一条订单数据,在插入 MySQL 时通过订阅 Binlog,通过 Flink 异构到 Elasticsearch 中。由于是单条记录,不涉及并发消费,可以订阅 Master MySQL。

订购数据异构

订购数据的数据异构有些不同,订购数据分为主表和扩展表,在 MySQL 中两张表的数据需要整合异构成一条记录存储到 Es 中。如果采用并行消费,则会出现 Flink 接收消息先后问题,简单说,就是有可能先接收到扩展表的 binlog 后接收到主表的 binlog。

所以改造的方案是,只订阅主表的 binlog,接收到消息后,通过反查 MySQL 的方式,进行数据整合,然后进行数据异构。考虑到对 MySQL 的压力,不能反查 Master MySQL,需要订阅 Slave MySQL。所以,这个方案的缺点是,不仅增加了 IO 的交互,而且数据异构的延迟较大。

商品数据异构

而商品数据异构是使用并发消费的,因为商品数据不需要保证严格的顺序,所以,商品数据异构的方式采用和订购数据同样的模式,由于商品数据需要缓存,所以,不仅要 Elasticsearch,还要写 redis,这样的架构设计使用 Flink 也很简单。

总结

Flink 被越来越多业务所使用,作为高性能的分布式流处理平台,不断的改进我们所使用的技术,以及不断突破我们原有的固化思维。其实,最早的设计方案是在系统里接收 Binlog 消息,然后处理,再异构存储写入 Elasticsearch。而采用 Flink,逐步理解流处理模式,我认为更在于思想理念上的改变。

以上内容仅代表作者个人思考,希望本文对大家有所帮助~~

flink写入 mysql_基于 Binlog + Flink 实现多表数据同构/异构方案相关推荐

  1. 基于表格存储的高性能监控数据存储计算方案

    概述 随着软件架构的愈发复杂,了解系统现状.调查问题的困难度也增加了很多.此时,一套完善的监控方案能够让开发和运维工程师快速排查问题,更好的维护系统的稳定性. 开源监控方案中,Zabbix.Nagio ...

  2. 基于Solr DIH实现MySQL表数据全量索引和增量索引

    实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单 ...

  3. solr mysql 增量索引_基于Solr DIH实现MySQL表数据全量索引和增量索引

    实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单 ...

  4. kfaka storm写入mysql_基于Storm+Kafka+Zookeeper锁+Memcached+mysql架构全方位系统Storm项目案例实战...

    基于Storm+Kafka+Zookeeper锁+Memcached+mysql架构全方位系统Storm项目案例实战 适应人群 有一定Storm基础.Kafka基础.Memcached基础.Zooke ...

  5. 基于PLC系统的点焊机器人数据通讯采集方案

    点焊机器人多以PLC为控制系统,以安川(MOTOMAN)ES165D为例.安川ES165D电控系统,主要采用三菱FX1N.FX2N和FX3U系列PLC配合三菱GOT1000系列触摸屏实现.现在要在不影 ...

  6. hana数据库连接mysql_如何连接HANA数据库读取表数据

    1, 取保SAP系统与HANA 数据库服务器网络连接 在SE38中运行report RSBDCOS0,ping一下HANA database,确保没有丢包现象发生. 也可以通过tcode:OS01来p ...

  7. 实战-缓存数据一致+binlog初始+cannel监听+数据迁移,数据一致性架构设计

    前言 一. 解决缓存不命中(高并发操作击穿打挂DB的风险) 当并发量打的时候,当我们的缓存过期时,就算到数据库的比例偏小的时候,我们的请求时比较大的.那也会存在数据库崩掉的情况. 解决方案想法如下(总 ...

  8. 写入mysql_《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL

    前言 之前其实在 <从0到1学习Flink>-- 如何自定义 Data Sink ? 文章中其实已经写了点将数据写入到 MySQL,但是一些配置化的东西当时是写死的,不能够通用,最近知识星 ...

  9. 基于Apache Flink的爱奇艺实时计算平台建设实践

    导读:随着大数据的快速发展,行业大数据服务越来越重要.同时,对大数据实时计算的要求也越来越高.今天会和大家分享下爱奇艺基于Apache Flink的实时计算平台建设实践. 今天的介绍会围绕下面三点展开 ...

  10. 基于 Apache Flink + Hologres 的实时推荐系统架构解析

    简介:<实时数仓入门训练营>由阿里云研究员王峰.阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打 ...

最新文章

  1. Vmware 10 安装
  2. 在 Java 中利用 redis 实现 LBS 服务
  3. 安卓AS_git 进行更新远程分支
  4. mysql的远程链接工具_Navicat远程链接mysql-8数据库具体操作
  5. 洛谷P1220 关路灯(区间dp)
  6. 如何替换SAP Spartacus启动Component -app-root
  7. 嵌入式系统常见的内存段
  8. 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
  9. 基于 HTML5 WebGL 的民航客机飞行监控系统
  10. inputstreamreader未关闭会导致oom_【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?
  11. 09. Django基础:URL反向解析
  12. 机器学习之网格搜索(GridSearch)及参数说明,实例演示
  13. ShxViewer_SHX字体查看
  14. dedecms教程:织梦模板修改{dede:list}标签后,可支持权重排序、flag标签功能
  15. Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available.
  16. mx播放器有没有投屏功能_这个播放器真是太强大了!
  17. XTU Oj 128
  18. java编写机器人_用JAVA编写自己的机器人一起“厮杀”
  19. 图形界面 I: 图形界面的动画 (第三章)
  20. GB编码,汉字在编译器中数值

热门文章

  1. Linux操作系统中sed工具常见用法
  2. C 语言 结构类型 结构
  3. 【gulp-sass】本地搭建sass开发环境
  4. HttpClient短信接口
  5. jQuery.callbacks 注释
  6. Daily Scrum 10.28
  7. 我所熟悉的网站负载均衡技术之硬件篇
  8. 二进制,八进制十进制十六进制之间数据转换
  9. EMNLP'21 | 华东师范提出TransPrompt,在众多数据上达到SOTA
  10. 【基础】深度学习最常用的10个激活函数!(数学原理+优缺点)