Databus和canal都能够提供实时从数据库获取变更,并提供给下游的实时消费流的功能。

本文针对两个系统实现和应用上的不同点,做了一个简单的对比:

对比项

Databus

canal

结论

支持的数据库

mysql, oracle

mysql(据说内部版本支持oracle)

Databus目前支持的数据源更多

业务开发

业务只需要实现事件处理接口

事件处理外,需要处理ack/rollback,

反序列化异常等

Databus开发接口用户友好度更高

服务模型

relay

relay可以同时服务多个client

一个server instance只能服务一个client

(受限于server端保存拉取位点)

Databus服务模式更灵活

client

client可以拉取多个relay的变更,

访问的relay可以指定拉取某些表某些分片的变更

client只能从一个server拉取变更,

而且只能是拉取全量的变更

可扩展性

client可以线性扩展,处理能力也能线性扩展

(Databus可识别pk,自动做数据分片)

client无法扩展

Databus扩展性更好

可用性

client ha

client支持cluster模式,每个client处理一部分数据,

某个client挂掉,其他client自动接管对应分片数据

主备client模式,主client消费,

如果主client挂掉,备client可自动接管

Databus实时热备方案更成熟

relay/server ha

多个relay可连接到同一个数据库,

client可以配置多个relay,relay故障启动切换

主备relay模式,relay通过zk进行failover

canal主备模式对数据库影响更小

故障对上游

数据库的影响

client故障,bootstrap会继续拉取变更,

client恢复后直接从bootstrap拉取历史变更

client故障会阻塞server拉取变更,

client恢复会导致server瞬时从数据库拉取大量变更

Databus本身的故障对数据库影响几乎为0

系统状态监控

程序通过http接口将运行状态暴露给外部

暂无

Databus程序可监控性更好

开发语言

java,核心代码16w,测试代码6w

java,4.2w核心代码,6k测试代码

Databus项目更成熟,当然学习成本也更大

Databuscanal对比相关推荐

  1. 不同编程语言之间的具体实现对比

    不同语言之间的具体实现对比 官网地址:https://programming-idioms.org/ 这个网站的核心存储部分代码是开源的,使用 Go 语言实现.源码地址: https://github ...

  2. 正向最大匹配 和逆向最大匹配对比比较

    正向最大匹配法 &逆向最大匹配法 原理对比 下面介绍的分词算法中最简单的正向最大匹配和反向最大匹配. 这种两种方法都是机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的 ...

  3. JDBC与数据库连接工具对比分析

    JDBC 使用步骤: 注册数据库驱动 通过DriverManager获取数据库连接 通过Connection对象获取Statement对象 使用Statement执行SQL语句 操作ResultSet ...

  4. GeforceRTX系列参数对比

    GeforceRTX系列参数对比

  5. YOLO、SSD、FPN、Mask-RCNN检测模型对比

    YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...

  6. RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比

    RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...

  7. TCP/UDP对比总结

    在计算机网络中,有三种体系结构划分方式,第一种是OSI七层协议体系结构,由上到下分别是:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层:第二种是TCP/IP四层协议,由上到下分别是:应用层 ...

  8. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  9. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较

    1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...

最新文章

  1. Microsoft Visual C++ 14.0 is required
  2. 对程序错误的处理——Windows核心编程学习手札之一
  3. Flutter一切皆widget但是不要将所有东西放入一个widget
  4. 学完Java后找工作难吗?需要满足什么条件?
  5. python中的def语句_Python def 函数
  6. 基于 Nginx 的 HTTPS 性能优化实践
  7. Android Studio安装问题及填坑
  8. 【Java从0到架构师】MySQL 基础
  9. Markdown笔记简明教程
  10. Exchange 2010升级到Exchange 2016汇总
  11. 网络七层协议和TCP/IP五层协议
  12. cmake 返回上层目录
  13. 真假马云Deciphering Jack Ma
  14. java合并果子_经典题-提高组2004年 合并果子
  15. 如何使用FSMC让OLED屏幕刷新率飞起来?
  16. 微信官宣:一大波 2022 新年红包封面来了,这波太秀了!!
  17. 观看2022年卡塔尔世界杯的感想
  18. 咕咚要和keep们刚正面,闪电战还是持久战?
  19. Fisher线性判别 模式识别 例题
  20. 人脸性别识别文献阅读笔记(3)

热门文章

  1. 1数据类型、ER图、范式
  2. Java 如何模拟真正的并发请求?
  3. PDF文件带有密码如何解除?
  4. 矩阵方程求解内置函数
  5. trainging contest#1(2011大连现场赛)C BY bly
  6. 用python玩转数据作业答案_大学mooc用Python玩转数据课后答案
  7. ZYNQ7010教程(一)PL部分
  8. 邮票面值设计java,[洛谷P1021][题解]邮票面值设计
  9. CustomerList
  10. chrome-linux/chrome: error while loading shared libraries: libnss3.so解决方法