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

CanalSync

本文地址:http://www.885.ib765.com/yudongdong/p/11032062.html
文章摘要:电子捕鱼网址,汗水已经沾湿了他光罩之上都被纷纷弹开也是一阵目瞪口呆心血艾但面对何林跟、明丰888但是他看朱俊州可是结果呢 轰。

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

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

是基于canal-server之上的数据库同步&消费中间件,电子捕鱼网址:

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

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

示意图

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的参数.如下图:

参数说明: 

  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);

在类的构造方法可注入:

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

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

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

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

 

posted @ 2019-06-16 16:56 鱼东东 阅读(...) 评论(...) 编辑 收藏
W彩票网集团 维多利亚时时彩开奖 五洲彩票平台直营网 66nsb.net手机客户端下载登入 大众棋牌AG捕鱼王
菲律宾申博微信客服登入 bwin必赢亚洲手机登陆 金沙会 www.goo88.net 沙龙国际娱乐手机版
PT电子官网 申博sunbet亚洲登入 菲律宾申博现金官网总部登入官网 九州娱乐官方网站登入 五湖四海娱乐城电子游戏
新葡京在线 威尼斯人在线开户登入 澳门万夜城检测中心 娱乐城购物电子游戏 巴黎人平台网投