一、FlinkX实时采集性能的根本介绍

首先为大家介绍下FlinkX实时模块的分类,如下图所示:

1、实时采集模块(CDC)

1)MySQL Binlog插件

利用阿里开源的Canal组件实时从MySQL中捕捉变更数据。

2)PostgreSQL Wal插件

PostgreSQL 实时采集是基于 PostgreSQL的逻辑复制以及逻辑解码性能来实现的。逻辑复制同步数据的原理是,在Wal日志产生的数据库上,由逻辑解析模块对Wal日志进行初步的解析,它的解析后果为ReorderBufferChange(能够简略了解为HeapTupleData),再由Pgoutput Plugin对两头后果进行过滤和音讯化拼接后,而后将其发送到订阅端,订阅端通过逻辑解码性能进行解析。

2、音讯队列

1)Kafka:Kafka插件存在四个版本,依据Kafka版本的不同,插件名称也略有不同。具体对应关系如下表所示:

2)EMQX:EMQX 是一款齐全开源,高度可伸缩,高可用的分布式MQTT音讯服务器,实用于IoT、M2M 和挪动应用程序,可解决千万级别的并发客户端。

3、距离轮询

RDB类型插件的应用限度:

只有RDB类型的reader插件反对距离轮询轮询字段只能为数值类型或者工夫类型轮询字段只能为间断递增且不反复

4、其余

Hive插件: Hive插件只有写入插件,性能基于HDFS的写入插件实现,也就是说从实时采集插件读取,写入Hive也反对失败复原的性能。

二、Binlog实时采集原理

1、什么是Binlog

MySQL 的二进制日志 Binlog 能够说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查问语句Select、Show等),以事件模式记录,还蕴含语句所执行的耗费的工夫,MySQL的二进制日志是事务平安型的,Binlog 的次要目标是复制和复原。

2、Binlog插件基本原理

实时采集插件的外围是如何实时捕捉数据库数据的变更,对于MySQL数据库而言,阿里开源的Canal曾经很好的帮咱们实现了基于MySQL数据库增量日志解析,提供增量数据订阅和生产性能。因而这里咱们间接用Canal捕捉MySQL数据库数据的变更信息,基于FlinkX框架将工作简化成脚本的配置,基于Flink的Checkpoint机制提供了工作的故障复原,进步了工作的容错性。

根本步骤如下:

工作启动时启动Canal线程Canal模仿MySQL slave的交互协定,假装本人为MySQL slave,向MySQL master发送dump协定MySQL master收到dump申请,开始推送Binary Log给slave(即Canal)Canal解析Binary Log 对象(原始为Byte流)FlinkX获取Canal解析后的对象做二次解析,封装后发送至上游数据源

三、Binlog到Hive实战

1、环境筹备:确认数据库开启了Binlog

show variables like '%log_bin%';

2、建表

CREATE TABLE `kudu` (    `id` bigint(11) NOT NULL AUTO_INCREMENT,    `user_id` bigint(11) DEFAULT NULL,    `name` varchar(255) DEFAULT NULL,    PRIMARY KEY (`id`)  ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

本文首发于:数栈研习社

数栈是一站式的数据中台PaaS,FlinkX这个我的项目咱们也在github社区上开源了,大家如果有想法和趣味欢送来撩~

对于FlinkX的基础知识,咱们还做了系列视频:
https://www.bilibili.com/vide...