阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL增量订阅&消费组件Canal POC

136次阅读
没有评论

共计 16010 个字符,预计需要花费 41 分钟才能阅读完成。

POC 的目的:
1、与 MySQL 的对接方式,配置文档
2、订阅的延迟
3、订阅后宕机消息会不会丢失
4、能不能从指定的点开始重新订阅
5、高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅是否会延迟

Canal 介绍

官网地址:https://github.com/alibaba/canal

MySQL 主备复制原理

MySQL 增量订阅 & 消费组件 Canal POC

 

从上层来看,复制分成三步:

  1. master 将改变记录到二进制日志 (binary log) 中(这些记录叫做二进制日志事件,binary log events,可以通过 show binlog events 进行查看);
  2. slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
  3. slave 重做中继日志中的事件,将改变反映它自己的数据。

Canal 工作原理

 MySQL 增量订阅 & 消费组件 Canal POC

  1. 原理相对比较简单:
  2. canal 模拟 mysql slave 的交互协议,伪装自己为 mysql slave,向 mysql master 发送 dump 协议
  3. mysql master 收到 dump 请求,开始推送 binary log 给 slave(也就是 canal)
  4. canal 解析 binary log 对象(原始为 byte 流)

Canal 安装部署

下载 canal

直接下载,访问:https://github.com/alibaba/canal/releases,也可以在 linux 上直接联网下载:

服务端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.deployer-1.0.23.tar.gz

客户端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.example-1.0.23.tar.gz

解压 canal

Mkdir /app/canal

Mkdir /app/canal-example

Tar zxvf canal.deployer-1.0.23.tar.gz -C /app/canal

Tar zxvf canal.example-1.0.23.tar.gz -C /app/canal-example

MySQL 配置修改

a. canal 的原理是基于 mysql binlog 技术,所以这里一定需要开启 mysql 的 binlog 写入功能,建议配置 binlog 模式为 row.

** 针对阿里云 RDS 账号默认已经有 binlog dump 权限, 不需要任何权限或者 binlog 设置, 可以直接跳过这一步 **

[mysqld]

log-bin=mysql-bin #添加这一行就 ok

binlog-format=ROW #选择 row 模式

server_id=1 #配置 mysql replaction 需要定义,不能和 canal 的 slaveId 重复

b. canal 的原理是模拟自己为 mysql slave,所以这里一定需要做为 mysql slave 的相关权限.

CREATE USER canal IDENTIFIED BY ‘canal’; 

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘canal’@’%’;

— GRANT ALL PRIVILEGES ON *.* TO ‘canal’@’%’ ;

FLUSH PRIVILEGES;

针对已有的账户可直接通过 grant

Canal 配置修改

vi conf/example/instance.properties
#################################################
## mysql serverId
canal.instance.mysql.slaveId = 1234
 
# position info,需要改成自己的数据库信息
canal.instance.master.address = 172.16.0.158:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
 
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
 
# username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal  
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =canal
canal.instance.connectionCharset = UTF-8
 
# table regex
canal.instance.filter.regex = .*\\..*
 
#################################################

说明:

  • canal.instance.connectionCharset 代表数据库的编码方式对应到 Java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1

Canal-Server 启停

sh bin/startup.sh 启动
sh bin/stop.sh  停止
vi logs/canal/canal.log  查看 canal 日志
vi logs/example/example.log  查看 instance 的日志

Canal-Client 启停

Cd /app/canal-example
sh bin/startup.sh 启动canal 客户端
sh bin/stop.sh  停止 canal 客户端
tail -f /app/canal-example/logs/example/entry.log 查看 canal 客户端订阅的日志

尝试修改 mysql 数据库,如上述我们配置的库是 canal,我们创建一个 userinfo 的用户表,可以在 entry.log 里面打印出 userinfo 的信息

Canal-Client 开发

到此为止整个 canal 环境搭建完成。

不过 canal-example 是一个已经编译好的包,如果我们需要对源码进行修改,输出一些我们自己想要的信息,可以重新开发 canal 客户端。

客户端源码官方下载地址:https://github.com/alibaba/canal/wiki/ClientExample

  • Simple 客户端例子:SimpleCanalClientTest
  • Cluster 客户端例子:ClusterCanalClientTest

Canal-Server HA 配置

更多配置策略请参考官方文档:https://github.com/alibaba/canal/wiki/AdminGuide

a. 修改 canal.properties,加上 zookeeper 配置

canal.zkServers=172.16.7.122:2181
canal.instance.global.spring.xml = classpath:spring/default-instance.xml

b. 创建 example 目录,并修改 instance.properties

canal.instance.mysql.slaveId = 1234 ## 另外一台机器改成 1235,保证 slaveId 不重复即可
canal.instance.master.address = 172.16.0.158:3306

注意:两台机器上的 instance 目录的名字需要保证完全一致,HA 模式是依赖于 instance name 进行管理,同时必须都选择 default-instance.xml 配置

启动两台机器的 canal,启动后,你可以查看 logs/example/example.log,只会看到一台机器上出现了启动成功的日志。查看一下 zookeeper 中的节点信息,也可以知道当前工作的节点为 172.16.0.157:11111

MySQL 增量订阅 & 消费组件 Canal POC

Canal pom 版本需要 1.0.22 或以上,否则 zkclient 可能发生冲突

<dependency>
    <groupId>com.alibaba.otter</groupId>
    <artifactId>canal.client</artifactId>
    <version>1.0.22</version>
</dependency>

 

Canal POC

消费位点

Canal client 接收到日志之后要提交 ack 确认

connector.ack(batchId); // 提交确认

canal server 在接收了客户端的 ack 后,就会记录客户端提交的最后位点,如果 canal client 没有提交位点,则下一次 canal client 启动的时候  会将最后记录的位点把日志重新推送过来,直到 canal client 提交 ack 确认为止。

订阅延迟

Canal-server 单点模式下,订阅延迟平均 22.65 毫秒,HA 模式下,订阅延迟平均 24.16 毫秒,具体数据请参考附录。

宕机消息是否丢失

停止正在工作的 172.16.0.157 的 canal server,这时 172.16.0.158 会立马启动 example instance,提供新的数据服务。与此同时,客户端也会随着 canal server 的切换,通过获取 zookeeper 中的最新地址,与新的 canal server 建立链接,继续消费数据,整个过程自动完成。

 MySQL 增量订阅 & 消费组件 Canal POC

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-04/143063p2.htm

从指定的点开始订阅

MySQL 链接时的起始位置(instance.properties)

  • canal.instance.master.journal.name + canal.instance.master.position : 精确指定一个 binlog 位点,进行启动
  • canal.instance.master.timestamp : 指定一个时间戳,canal 会自动遍历 mysql binlog,找到对应时间戳的 binlog 位点后,进行启动
  • 不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)

另外,可以从一个指定的点开始获取日志:

CanalEntry.getHeader().getLogfileOffset()
 

高并发下的日志顺序

高并发下测试方案:

mysql 的主键 id 是自增的,无论业务如何高并发,但插入到 mysql 的 id 肯定是自增且有序的,我们以此为基准来判断 canal 订阅到日志是否也是有序的。

首先在 canal 客户端获取 id 列的值,分批存入一个数组,然后对这个数组进行冒泡排序,如果在冒泡算法中出现一次冒泡,则说明 canal 订阅到的日志出现乱序。

实验结果:

本地开发机(i5-5200U CPU @2.2GHz 2.19GHz 8Gb 内存),共开启 1000 个线程,每个线程插入 1000 条记录,mysql 最大连接数设置 1000,总共 100 万条记录,canal client 没有输出乱序日志,并且 canal client 输入的分批次(canal 自动分批)size 总和为 100 万。另外,当插入数据库动作完成之后,canal-client 输出也同时完成,说明订阅并没有出现较大的延迟,整个过程持续 840s,1190tps/s。

MySQL 增量订阅 & 消费组件 Canal POC

 

数据库也共 100 万条记录:

MySQL 增量订阅 & 消费组件 Canal POC

 

附录

订阅延迟—canal server 单点

canal-client 收到日志时间

mysql 插入时间

订阅延迟(ms)

1489994604188.00

1489994604142.00

46.00

1489994605180.00

1489994605149.00

31.00

1489994606165.00

1489994606151.00

14.00

1489994607165.00

1489994607153.00

12.00

1489994608199.00

1489994608155.00

44.00

1489994609199.00

1489994609157.00

42.00

1489994610187.00

1489994610160.00

27.00

1489994611184.00

1489994611163.00

21.00

1489994612176.00

1489994612172.00

4.00

1489994613208.00

1489994613174.00

34.00

1489994614197.00

1489994614175.00

22.00

1489994615186.00

1489994615176.00

10.00

1489994616184.00

1489994616178.00

6.00

1489994617189.00

1489994617180.00

9.00

1489994618208.00

1489994618182.00

26.00

1489994619206.00

1489994619185.00

21.00

1489994620202.00

1489994620187.00

15.00

1489994621195.00

1489994621188.00

7.00

1489994622230.00

1489994622189.00

41.00

1489994623220.00

1489994623190.00

30.00

1489994624210.00

1489994624192.00

18.00

1489994625202.00

1489994625195.00

7.00

1489994626236.00

1489994626199.00

37.00

1489994627227.00

1489994627200.00

27.00

1489994628217.00

1489994628202.00

15.00

1489994629211.00

1489994629203.00

8.00

1489994630212.00

1489994630205.00

7.00

1489994631210.00

1489994631206.00

4.00

1489994632249.00

1489994632208.00

41.00

1489994633250.00

1489994633210.00

40.00

1489994634215.00

1489994634211.00

4.00

1489994635216.00

1489994635212.00

4.00

1489994636257.00

1489994636214.00

43.00

1489994637285.00

1489994637241.00

44.00

1489994638278.00

1489994638243.00

35.00

1489994639283.00

1489994639246.00

37.00

1489994640283.00

1489994640248.00

35.00

1489994641271.00

1489994641250.00

21.00

1489994642262.00

1489994642251.00

11.00

1489994643255.00

1489994643252.00

3.00

1489994644268.00

1489994644254.00

14.00

1489994645268.00

1489994645255.00

13.00

1489994646300.00

1489994646256.00

44.00

1489994647292.00

1489994647259.00

33.00

1489994648287.00

1489994648260.00

27.00

1489994649273.00

1489994649262.00

11.00

1489994650267.00

1489994650263.00

4.00

1489994651302.00

1489994651265.00

37.00

1489994652293.00

1489994652268.00

25.00

1489994653288.00

1489994653270.00

18.00

1489994654298.00

1489994654271.00

27.00

1489994655289.00

1489994655273.00

16.00

1489994656278.00

1489994656275.00

3.00

1489994657282.00

1489994657277.00

5.00

1489994658325.00

1489994658280.00

45.00

1489994659313.00

1489994659282.00

31.00

1489994660291.00

1489994660284.00

7.00

1489994661299.00

1489994661286.00

13.00

1489994662290.00

1489994662287.00

3.00

1489994663331.00

1489994663288.00

43.00

1489994664318.00

1489994664291.00

27.00

1489994665332.00

1489994665293.00

39.00

1489994666327.00

1489994666295.00

32.00

1489994667321.00

1489994667297.00

24.00

1489994668315.00

1489994668300.00

15.00

1489994669316.00

1489994669301.00

15.00

1489994670311.00

1489994670302.00

9.00

1489994671334.00

1489994671304.00

30.00

1489994672334.00

1489994672306.00

28.00

1489994673332.00

1489994673307.00

25.00

1489994674327.00

1489994674309.00

18.00

1489994675324.00

1489994675310.00

14.00

1489994676317.00

1489994676312.00

5.00

1489994677325.00

1489994677313.00

12.00

1489994678319.00

1489994678314.00

5.00

1489994679352.00

1489994679315.00

37.00

1489994680356.00

1489994680317.00

39.00

1489994681351.00

1489994681318.00

33.00

1489994682344.00

1489994682320.00

24.00

1489994683342.00

1489994683324.00

18.00

1489994684369.00

1489994684326.00

43.00

1489994685368.00

1489994685327.00

41.00

1489994686361.00

1489994686329.00

32.00

1489994687353.00

1489994687330.00

23.00

1489994688345.00

1489994688331.00

14.00

1489994689357.00

1489994689333.00

24.00

1489994690345.00

1489994690334.00

11.00

1489994691346.00

1489994691336.00

10.00

1489994692340.00

1489994692337.00

3.00

1489994693376.00

1489994693339.00

37.00

1489994694404.00

1489994694362.00

42.00

1489994695397.00

1489994695363.00

34.00

1489994696389.00

1489994696366.00

23.00

1489994697395.00

1489994697367.00

28.00

1489994698392.00

1489994698369.00

23.00

1489994699378.00

1489994699370.00

8.00

1489994700408.00

1489994700372.00

36.00

1489994701401.00

1489994701375.00

26.00

1489994702400.00

1489994702377.00

23.00

1489994703392.00

1489994703379.00

13.00

 

平均:22.65ms

 

订阅延迟—canal server 集群(两个节点 - 主从)

canal-client收到日志时间

mysql插入时间

订阅延迟(s)

1490007771482.00

1490007771476.00

6.00

1490007772508.00

1490007772478.00

30.00

1490007773524.00

1490007773488.00

36.00

1490007774494.00

1490007774489.00

5.00

1490007775512.00

1490007775491.00

21.00

1490007776527.00

1490007776493.00

34.00

1490007777552.00

1490007777500.00

52.00

1490007778539.00

1490007778502.00

37.00

1490007779522.00

1490007779504.00

18.00

1490007780528.00

1490007780506.00

22.00

1490007781538.00

1490007781521.00

17.00

1490007782552.00

1490007782523.00

29.00

1490007783531.00

1490007783525.00

6.00

1490007784551.00

1490007784527.00

24.00

1490007785562.00

1490007785528.00

34.00

1490007786567.00

1490007786530.00

37.00

1490007787539.00

1490007787531.00

8.00

1490007788558.00

1490007788532.00

26.00

1490007789576.00

1490007789534.00

42.00

1490007790576.00

1490007790536.00

40.00

1490007791540.00

1490007791537.00

3.00

1490007792584.00

1490007792539.00

45.00

1490007793555.00

1490007793541.00

14.00

1490007794565.00

1490007794543.00

22.00

1490007795573.00

1490007795544.00

29.00

1490007796590.00

1490007796545.00

45.00

1490007797562.00

1490007797547.00

15.00

1490007798565.00

1490007798548.00

17.00

1490007799572.00

1490007799551.00

21.00

1490007800568.00

1490007800553.00

15.00

1490007801580.00

1490007801554.00

26.00

1490007802588.00

1490007802555.00

33.00

1490007803595.00

1490007803557.00

38.00

1490007804577.00

1490007804558.00

19.00

1490007805583.00

1490007805559.00

24.00

1490007806596.00

1490007806560.00

36.00

1490007807566.00

1490007807562.00

4.00

1490007808581.00

1490007808564.00

17.00

1490007809596.00

1490007809567.00

29.00

1490007810607.00

1490007810570.00

37.00

1490007811578.00

1490007811571.00

7.00

1490007812591.00

1490007812572.00

19.00

1490007813610.00

1490007813586.00

24.00

1490007814629.00

1490007814588.00

41.00

1490007815601.00

1490007815590.00

11.00

1490007816614.00

1490007816591.00

23.00

1490007817622.00

1490007817592.00

30.00

1490007818600.00

1490007818594.00

6.00

1490007819611.00

1490007819596.00

15.00

1490007820612.00

1490007820598.00

14.00

1490007821623.00

1490007821600.00

23.00

1490007822632.00

1490007822602.00

30.00

1490007823641.00

1490007823618.00

23.00

1490007824641.00

1490007824619.00

22.00

1490007825658.00

1490007825621.00

37.00

1490007826664.00

1490007826622.00

42.00

1490007827632.00

1490007827623.00

9.00

1490007828646.00

1490007828625.00

21.00

1490007829633.00

1490007829627.00

6.00

1490007830650.00

1490007830628.00

22.00

1490007831660.00

1490007831630.00

30.00

1490007832672.00

1490007832631.00

41.00

1490007833645.00

1490007833633.00

12.00

1490007834656.00

1490007834635.00

21.00

1490007835668.00

1490007835637.00

31.00

1490007836661.00

1490007836639.00

22.00

1490007837668.00

1490007837640.00

28.00

1490007838678.00

1490007838642.00

36.00

1490007839689.00

1490007839644.00

45.00

1490007840665.00

1490007840646.00

19.00

1490007841666.00

1490007841647.00

19.00

1490007842677.00

1490007842649.00

28.00

1490007843688.00

1490007843662.00

26.00

1490007844699.00

1490007844667.00

32.00

1490007845703.00

1490007845669.00

34.00

1490007846696.00

1490007846672.00

24.00

1490007847696.00

1490007847674.00

22.00

1490007848704.00

1490007848678.00

26.00

1490007849715.00

1490007849680.00

35.00

1490007850698.00

1490007850681.00

17.00

1490007851703.00

1490007851682.00

21.00

1490007852714.00

1490007852684.00

30.00

1490007853722.00

1490007853685.00

37.00

1490007854692.00

1490007854687.00

5.00

1490007855733.00

1490007855689.00

44.00

1490007856702.00

1490007856690.00

12.00

1490007857702.00

1490007857692.00

10.00

1490007858726.00

1490007858693.00

33.00

1490007859699.00

1490007859694.00

5.00

1490007860720.00

1490007860695.00

25.00

1490007861720.00

1490007861697.00

23.00

1490007862728.00

1490007862698.00

30.00

1490007863705.00

1490007863700.00

5.00

1490007864706.00

1490007864701.00

5.00

平均:24.16ms。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/143063.htm

POC 的目的:
1、与 MySQL 的对接方式,配置文档
2、订阅的延迟
3、订阅后宕机消息会不会丢失
4、能不能从指定的点开始重新订阅
5、高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅是否会延迟

Canal 介绍

官网地址:https://github.com/alibaba/canal

MySQL 主备复制原理

MySQL 增量订阅 & 消费组件 Canal POC

 

从上层来看,复制分成三步:

  1. master 将改变记录到二进制日志 (binary log) 中(这些记录叫做二进制日志事件,binary log events,可以通过 show binlog events 进行查看);
  2. slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
  3. slave 重做中继日志中的事件,将改变反映它自己的数据。

Canal 工作原理

 MySQL 增量订阅 & 消费组件 Canal POC

  1. 原理相对比较简单:
  2. canal 模拟 mysql slave 的交互协议,伪装自己为 mysql slave,向 mysql master 发送 dump 协议
  3. mysql master 收到 dump 请求,开始推送 binary log 给 slave(也就是 canal)
  4. canal 解析 binary log 对象(原始为 byte 流)

Canal 安装部署

下载 canal

直接下载,访问:https://github.com/alibaba/canal/releases,也可以在 linux 上直接联网下载:

服务端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.deployer-1.0.23.tar.gz

客户端包:https://github.com/alibaba/canal/releases/download/v1.0.23/canal.example-1.0.23.tar.gz

解压 canal

Mkdir /app/canal

Mkdir /app/canal-example

Tar zxvf canal.deployer-1.0.23.tar.gz -C /app/canal

Tar zxvf canal.example-1.0.23.tar.gz -C /app/canal-example

MySQL 配置修改

a. canal 的原理是基于 mysql binlog 技术,所以这里一定需要开启 mysql 的 binlog 写入功能,建议配置 binlog 模式为 row.

** 针对阿里云 RDS 账号默认已经有 binlog dump 权限, 不需要任何权限或者 binlog 设置, 可以直接跳过这一步 **

[mysqld]

log-bin=mysql-bin #添加这一行就 ok

binlog-format=ROW #选择 row 模式

server_id=1 #配置 mysql replaction 需要定义,不能和 canal 的 slaveId 重复

b. canal 的原理是模拟自己为 mysql slave,所以这里一定需要做为 mysql slave 的相关权限.

CREATE USER canal IDENTIFIED BY ‘canal’; 

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘canal’@’%’;

— GRANT ALL PRIVILEGES ON *.* TO ‘canal’@’%’ ;

FLUSH PRIVILEGES;

针对已有的账户可直接通过 grant

Canal 配置修改

vi conf/example/instance.properties
#################################################
## mysql serverId
canal.instance.mysql.slaveId = 1234
 
# position info,需要改成自己的数据库信息
canal.instance.master.address = 172.16.0.158:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
 
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
 
# username/password,需要改成自己的数据库信息
canal.instance.dbUsername = canal  
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =canal
canal.instance.connectionCharset = UTF-8
 
# table regex
canal.instance.filter.regex = .*\\..*
 
#################################################

说明:

  • canal.instance.connectionCharset 代表数据库的编码方式对应到 Java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1

Canal-Server 启停

sh bin/startup.sh 启动
sh bin/stop.sh  停止
vi logs/canal/canal.log  查看 canal 日志
vi logs/example/example.log  查看 instance 的日志

Canal-Client 启停

Cd /app/canal-example
sh bin/startup.sh 启动canal 客户端
sh bin/stop.sh  停止 canal 客户端
tail -f /app/canal-example/logs/example/entry.log 查看 canal 客户端订阅的日志

尝试修改 mysql 数据库,如上述我们配置的库是 canal,我们创建一个 userinfo 的用户表,可以在 entry.log 里面打印出 userinfo 的信息

Canal-Client 开发

到此为止整个 canal 环境搭建完成。

不过 canal-example 是一个已经编译好的包,如果我们需要对源码进行修改,输出一些我们自己想要的信息,可以重新开发 canal 客户端。

客户端源码官方下载地址:https://github.com/alibaba/canal/wiki/ClientExample

  • Simple 客户端例子:SimpleCanalClientTest
  • Cluster 客户端例子:ClusterCanalClientTest

Canal-Server HA 配置

更多配置策略请参考官方文档:https://github.com/alibaba/canal/wiki/AdminGuide

a. 修改 canal.properties,加上 zookeeper 配置

canal.zkServers=172.16.7.122:2181
canal.instance.global.spring.xml = classpath:spring/default-instance.xml

b. 创建 example 目录,并修改 instance.properties

canal.instance.mysql.slaveId = 1234 ## 另外一台机器改成 1235,保证 slaveId 不重复即可
canal.instance.master.address = 172.16.0.158:3306

注意:两台机器上的 instance 目录的名字需要保证完全一致,HA 模式是依赖于 instance name 进行管理,同时必须都选择 default-instance.xml 配置

启动两台机器的 canal,启动后,你可以查看 logs/example/example.log,只会看到一台机器上出现了启动成功的日志。查看一下 zookeeper 中的节点信息,也可以知道当前工作的节点为 172.16.0.157:11111

MySQL 增量订阅 & 消费组件 Canal POC

Canal pom 版本需要 1.0.22 或以上,否则 zkclient 可能发生冲突

<dependency>
    <groupId>com.alibaba.otter</groupId>
    <artifactId>canal.client</artifactId>
    <version>1.0.22</version>
</dependency>

 

Canal POC

消费位点

Canal client 接收到日志之后要提交 ack 确认

connector.ack(batchId); // 提交确认

canal server 在接收了客户端的 ack 后,就会记录客户端提交的最后位点,如果 canal client 没有提交位点,则下一次 canal client 启动的时候  会将最后记录的位点把日志重新推送过来,直到 canal client 提交 ack 确认为止。

订阅延迟

Canal-server 单点模式下,订阅延迟平均 22.65 毫秒,HA 模式下,订阅延迟平均 24.16 毫秒,具体数据请参考附录。

宕机消息是否丢失

停止正在工作的 172.16.0.157 的 canal server,这时 172.16.0.158 会立马启动 example instance,提供新的数据服务。与此同时,客户端也会随着 canal server 的切换,通过获取 zookeeper 中的最新地址,与新的 canal server 建立链接,继续消费数据,整个过程自动完成。

 MySQL 增量订阅 & 消费组件 Canal POC

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-04/143063p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计16010字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中