• 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复制数据。

  • 相关阅读:
    画江恩线
    从装饰者模式的理解说JAVA的IO包
    Form表单标签的Enctype属性的作用及应用示例介绍
    spring中的通配符
    简析SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
    Java数据封装成树形结构,多级
    详解InitializingBean、initMethod和@PostConstruct
    SpringCloud确保服务只能通过gateway转发访问,禁止直接调用接口访问
    Spring中的InitializingBean接口的使用
    Linux下Centos7对外开放端口
  • 原文地址:https://www.cnblogs.com/hzzjj/p/16334269.html
Copyright © 2020-2023  润新知