Otter数据同步
otter是一个分布式数据库同步系统工具,纯java编写,支持windows和linux操作系统。阿里的开源项目,数据同步的解决方案。
github:https://github.com/alibaba/otter
Otter作为阿里巴巴开源的是一个数据同步产品,他的最初目的是为了解决跨国异地机房双A架构,两边可写的场景,开发时间是从2011年一直持续到今天。
目前阿里巴巴b2b内部的本地--异地机房的同步需求基本上已经全部上了Otter。Otter基于数据库增量日志解析,支持mysql/oracle数据库进行同步,在最新的v4.2.13已经支持了mysql5.7以及阿里云提供的RDS数据库。
Otter工作原理:
- 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal,
请点击https://github.com/alibaba/canal - 典型管理系统架构,manager(web管理)+node(工作节点)
manager运行时推送同步配置到node节点
node节点将同步状态反馈到manager上 - 基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作.(otter node依赖于zookeeper进行分布式调度,需要安装一个zookeeper节点或者集群)
- db : 数据源以及需要同步到的库
- Canal : 用户获取数据库增量日志,目前主要支持mysql
- manager : 配置同步规则设置数据源同步源等
- zookeeper : 协调node进行协调工作
- node : 负责任务处理处理接受到的部分同步工作