开源基于Canal的开源增量数据订阅&消费中间件

CanalSync

canal 是阿里巴巴开源的一款基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。mysql

我开发的这个CanalSync项目 https://github.com/yuzd/CanalSync   ==>以为不错帮忙给个star谢谢git

是基于canal-server之上的数据库同步&消费中间件,github

用于可快速搭建消费canal-server的项目。 目前我已实现并开源了以下:redis

  1. 数据消费传输到redis组件
  2. 数据消费传输到rabbitmq组件
  3. 数据消费传输到mysql数据库组件

示意图

image

Nuget:

1. 接收canal-server的消息中间件:

Install-Package Canal.Serversql

2. 解析canal-server消息转出可执行sql的中间件:

Install-Package Canal.SqlParse数据库

如何使用

若是你须要写一个数据消费传输到XXXMQ,用不到反解析成sql的话,只须要引用 Canal.Server中间件。 若是你须要写一个数据消费传输到XXXdb,得用到反解析sql中间件,须要同时引用Canal.Server 和 Canal.SqlParse 这2个中间件。json

Canal.Server 如何使用

  1. 引用 Canal.Server 并appsettings.json 配置canal-server的参数.以下图:

image

参数说明: imagec#

  1. 建立一个 消费类 必需要 实现: INotificationHandler 接口,例如叫TestHandler
public class TestHandler:INotificationHandler<CanalBody>{
        public Task Handle(CanalBody notification)
        {
            //写消费逻辑

            return Task.CompletedTask;;
        }
    }
  1. 在startUp 使用并注册 该消费类
//注册了以后 canal-server有新的消息就会进入到TestHandler的Handle方法
      services.AddCanalService(produce => produce.RegisterSingleton<TestHandler>());

Canal.SqlParse 如何使用

目前只实现了解析mysql的逻辑,将来会加入sqlserver的解析逻辑!!app

//注册使用 connectionString是mysql的数据库链接字符串
      services.AddMysqlParseService(connectionString);
      
      // 计划中还未实现
      //services.AddSqlserverParseService(connectionString);

在类的构造方法可注入:sqlserver

image

如上图,表明将canal-server的数据直接在另外的mysql库里面执行,等于2个mysql数据进行互相同步。

欧洲与中国的2个mysql库 使用上述方法进行同步的测试

结果: 同步速度在100~200qps image

相关文章
相关标签/搜索