Canal学习笔记(客户端)
前言
最近公司用到Canal来做从MySQL到Tidb的数据同步,用到HA模式Canal,记录一下HA模式的工作原理。
Canal的架构模式
Canal是利用binlog日志来做数据同步,canal伪装成从节点从主节点dump binlog日志,所以canal分为server和client,server负责dump binlog日志,client负责处理binlog日志(比如入库)。
Canal客户端HA模式运行原理
Canal的HA模式是需要zk来保证,zk用来保存canal客户端的一些元数据,例如服务端节点信息(\otter\canal\cluster )、运行的服务节点信息(\otter\canal\destinations\{自定义分区}\running)、客户端节点信息(\otter\canal\destinations\{自定义分区}\cluster)、客户端拦截器配置信息(\otter\canal\destinations\{自定义分区}\1001\filter)、客户端binlog同步节点信息(\otter\canal\destinations\{自定义分区}\1001\cursor)、运行的客户端信息(\otter\canal\destinations\{自定义分区}\1001\running)

HA模式Canal客户端启动时,首先链接zk,在zk上注册客户端节点(\otter\canal\destinations\{自定义分区}\1001\running)服务,当没有客户端注册时则注册成功,已有客户端注册时则当前客户端进入静默状态(线程挂起),然后监听前一个客户端在zk注册节点变化,当前一个客户端退出(在zk上的注册节点信息发生变化)则通知所有静默状态的服务端进行zk服务注册,当有一个客户端注册成功时其他客户端则再此进入静默状态并且进行zk注册节点监听。

当客户端再zk上成功注册服务时,其他客户端会再次进入静默状态,进入静默状态核心思想是使用JUC下的AQS,详细如下:

Canal学习笔记(客户端)的更多相关文章
- MongoDB学习笔记~客户端命令行的使用
回到目录 当我们从MongoDB网站下载安装包之后,它会伴随有一系列的工具,服务器程序mongod是我们耳熟能详的了,客户端mongo和性能检测mongostat我们可能就没有用过了,今天主要是介绍一 ...
- Canal学习笔记(服务端)
canal服务端 canal服务端有两种运行模式,一种单机模式,一种HA运行模式(zk保证) 单机模式:同步的binlog节点信息保存在本地(/conf/{自定义分区文件夹}/),meta.dat H ...
- redis学习笔记——客户端
Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复. 对于每个与服务 ...
- SuperSocket 学习笔记-客户端
客户端: 定义 private AsyncTcpSession client; 初始化 client = new AsyncTcpSession(); client.Connected += Clie ...
- Metasploit学习笔记——客户端渗透攻击
1.浏览器渗透攻击实例——MS11-050安全漏洞 示例代码如下 msf > use windows/browser/ms11_050_mshtml_cobjectelement msf exp ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较
我们经常要在客户端进行数据查询,下面分别比较常用的几种查询方式:XMLHttpRequest, SDK.JQuery, SDK.Rest. XMLHttpRequest是最基本的调用方式,JQuery ...
- [Firefly引擎][学习笔记四][已完结]服务器端与客户端的通讯
原地址:http://www.9miao.com/question-15-54981.html 传送门:学习笔记一学习笔记二学习笔记三 前言:学习笔记三是模块封装,这个在持续开发中会不断更新, 因为写 ...
随机推荐
- 【转载】chown和chmod使用
二.指令名称 : chown 使用权限 : root 使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file... 说明 : Linu ...
- JavaSE基础知识(5)—面向对象(Object类)
一.包 java.lang包,属于java中的核心包,系统默认导入的,不用手动导入该包中的类:Object.System.String.Integer等 1.包的好处 ①分类管理java文件,查找和管 ...
- How to decode input data from a contract transaction without ABI?
1 I've found some libraries which decode input from transaction, but all of them require ABI of cont ...
- java之servlet学习基础(二)
上一次写到Servlet的实现方法,主要还是通过继承HttpServlet来实现Servlet.下面主要是回顾一下HttpServletRequest和HttpServletResponse对象中的一 ...
- java编程高级进阶
Java内存模型 对hadoop namenode -format执行过程的探究 intellij idea 高级用法之:集成JIRA.UML类图插件.集成SSH.集成FTP.Database管理 强 ...
- Hishop数据库根据产品ProductID取产品规格
#region 产品规格 public static string GetSku(int ProductId) { DataTable skus =GetSkus(ProductId); // Res ...
- 刷机魅蓝note2
直接上了. 情况: 魅蓝note2 公共版 忘记flyme 密码,手机号也换了,,找不回了..只能刷了.网上说就算刷了也不行,还是要输入flyme 密码 1. 直接刷官方的zip 包,不行,仍然要输 ...
- 【转】Android总结篇系列:Activity Intent Flags及Task相关属性
[转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...
- mybatis中怎样使用having?
1.dao层代码 List<ErgTipSimpleBo> queryListMore(@Param("typeId") Integer typeId,@Param(& ...
- ES6 学习之旅
最常用的ES6特性 1.let, const 2.class, extends, super 3.arrow function (箭头函数) 4.template string (用反引号(`)来标识 ...