zoukankan      html  css  js  c++  java
  • Databus&canal对比

    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项目更成熟,当然学习成本也更大

  • 相关阅读:
    css自适应宽高等腰梯形
    控制台屏蔽某console的输出
    js定时器的时间最小值-setTimeout、setInterval
    03_数字的字面量
    程序员-表情包
    程序员-趣图集
    js不是从上到下执行的吗?
    CSS样式重置
    系统程序名命令表
    js手风琴图片切换实现原理及函数分析
  • 原文地址:https://www.cnblogs.com/xunshao/p/9762377.html
Copyright © 2011-2022 走看看