摘要:
client的工作过程,需要我们自己去编写对应的逻辑,我们目前只能从example写的例子来看。目前examle中提供了两个例子,一个是单机的,一个是集群的cluster,我们后续如果需要进行开发的话,其实也是开发我们自己的client,以及client的一些逻辑。我们主要看下集群的client是如 阅读全文
摘要:
一、序列图 二、源码分析 2.1 Sink Sink阶段所做的事情,就是根据一定的规则,对binlog数据进行一定的过滤。我们之前跟踪过parser过程的代码,发现在parser完成后,会把数据放到一个环形队列TransactionBuffer中,也就是这个方法: 我们具体看下add这个方法。 判断 阅读全文
摘要:
一、序列图 1.1 启动 1.2 停止 二、源码分析 2.1 启动 这部分代码其实在ServerRunningMonitor的start()方法中。针对不同的destination,启动不同的CanalInstance。主要的方法在于initRunning()。 首先在zk中新增一个临时节点,表示的 阅读全文
摘要:
本文主要解析下canal server的启动过程,希望能有所收获。 一、序列图 1.1 启动 1.2 停止 二、源码分析 整个server启动的过程比较复杂,看图难以理解,需要辅以文字说明。 首先程序的入口在CanalLauncher的main方法中。 2.1 加载配置文件 从canal.prope 阅读全文
摘要:
本文主要分析的部分是instance启动时,parser的一个启动和工作过程。主要关注的是AbstractEventParser的start()方法中的parseThread。 一、序列图 二、源码分析 parseThread中包含的内容比较清晰,代码不是很长,我们逐步分析下。 2.1 构造数据库连 阅读全文
摘要:
binlog的寻找过程可能的场景如下: instance第一次启动 发生数据库主备切换 canal server HA情况下的切换 所以这个过程是能够保证binlog不丢失的关键点。 本文从源码的角度来分析下启动过程中的binlog寻找过程。 一、流程图 下图是根据源码画出的流程图,需要结合源码分析 阅读全文
摘要:
众所周知,Otter的代码打包后,是通过Jetty启动的,Otter代码的启动脚本中自带了开启Jetty远程DEBUG的脚本,所以我们只需要在启动Otter Manager和Otter Node的时候,带上如下参数: 其中8888就是我们远程debug的端口号。 然后在IDEA中开启远程调试,具体的 阅读全文
摘要:
最近在搞数据同步相关的内容,需要对otter的代码进行扩展,所以需要先熟悉一下otter的源码。首先我们整体来看下otter的工程结构。otter的工程结构比较复杂,需要花费一定的时间来理解各个部分的内容,仅仅通过官方文档无法准确的理解各个模块的内容,现分析如下: otter整体的工程结构如下: 其 阅读全文
摘要:
回顾2017年,可以说是对我而言有重大转折的一年。我们选择放弃了北京,来到了杭州,开始了新的生活。房子的事情也基本上落实了,虽然其中经历了种种坎坷,但是结局还是美好的,现在在等贷款放贷。中国人嘛,没有属于自己的房子,总觉得没有那种落地生根的感觉,住在出租房里面,总感觉不是那么回事。 我们养了一条狗, 阅读全文
摘要:
一、ShardingContext 在Sharding Jdbc中,我们其实需要抓住一个核心类,也就是ShardingContext,分片上下文,里面定义了下面几个内容: 里面的几个参数很简单易懂,但是里面包含的内容也是整个中间件的核心内容。 二、preparedStatement 这块对应于代码中 阅读全文