• canal


    官网:https://github.com/alibaba/canal

    什么是canal

      阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。

      canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)。

      这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具:
       

      canal通过binlog同步拿到变更数据,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等多源同步。

    canal使用场景

      场景1:原始场景, 阿里otter中间件的一部分

       场景2:更新缓存

      

      场景3:抓取业务数据新增变化表,用于制作拉链表。( 拉链表:记录每条信息的生命周期,一旦一条记录的生命周期结束,就要重新开始一条新的记录,并把当前日期放入生效的开始日期 )

      场景4:抓取业务表的新增变化数据,用于制作实时统计。

    canal运行原理

    复制过程分成三步:

        Master主库将改变记录,写到二进制日志(binary log)中

        Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);

        Slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。

    canal的工作原理很简单,就是把自己伪装成slave,假装从master复制数据。

  • 相关阅读:
    golang 简易聊天
    golang 自定义封包协议(转的)
    PHP 7 测试用例(转)
    android 百度地图开发
    Android studio 签名使用转
    百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
    Android控件属性大全(转)
    Android studio 一个项目中添加两个module遇到的bug
    win7 64位DCOM配置(关于导出excel 配置计算机组件服务)(转)
    Python学习--07迭代器、生成器
  • 原文地址:https://www.cnblogs.com/hzzjj/p/16334269.html
Copyright © 2020-2023  润新知