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


    CanalSync

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

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

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

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

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

    示意图

    image

    Nuget:

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

    Install-Package Canal.Server

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

    Install-Package Canal.SqlParse

    如何使用

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

    Canal.Server 如何使用

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

    image

    参数说明: image

    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的解析逻辑!!

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

    在类的构造方法可注入:

    image

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

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

    结果: 同步速度在100~200qps 有点低,

    下一步的优化方案是参考otter。消费端改用用aria2来下载

     image

  • 相关阅读:
    共享经济
    滑动用hammer
    js 数组去重 的5种方法
    js ajax上传图片到服务器
    js url图片转bese64
    去除移动端 a标签 点击有一个 阴影效果
    css 文字超出变 ... 点点点
    h5手势库 hammer.js
    xshell linux传文件
    IO流(Properties存取)
  • 原文地址:https://www.cnblogs.com/yudongdong/p/11032062.html
Copyright © 2020-2023  润新知