ITPub博客

首页 > 应用开发 > Java > canal部署使用

canal部署使用

原创 Java 作者:壹頁書 时间:2016-05-19 11:41:07 0 删除 编辑
昨天花了一天时间,部署了canal,但是还有很多细节不明白.

版本:
1.0.21

我发现部署之后,没有找到任何的存储文件.按说应该有中继日志这种东西,但是没有发现.
后来官方群中,有大神说它是内存存储.
## memory store RingBuffer size, should be Math.pow(2,n)
canal.instance.memory.buffer.size = 16384
## memory store RingBuffer used memory unit size , default 1kb
canal.instance.memory.buffer.memunit = 1024 
## meory store gets mode used MEMSIZE or ITEMSIZE
canal.instance.memory.batch.mode = MEMSIZE

一旦超过16k的event或者超过16m内存空间,则全链路阻塞..
至于什么是全链路阻塞,他们没有解释,我感觉就是canal不接收binlog了..

canal 使用zookeeper实现HA
他的模式是单主双活.
同一时间可以启动多个canal程序,但是只有一个canal程序提供服务.

在zookeeper中,可以看到canal集群中的成员
ls /otter/canal/cluster 

也可以看到哪个程序正在作为Master提供服务
get /otter/canal/destinations/songod/running


作为我编写的消费者程序,也可以启动多个.但是同一时间,只有一个消费者生效.这样就实现了HA的功能.

另外需要注意的是,
getWithoutAck 是可以异步ack或者rollback的.
但是ack或者rollback,一定严格按照接收的顺序.

比如getWithoutAck 1,2,3,4
如果直接 ack 3 ,那么canal会认为小于等于3的数据,都已经ack.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2103008/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: canal初探
下一篇: ElasticSearch Java API
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6339947