CanalSync

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

我开发的这个CanalSync项目 https://github.com/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来下载

开源基于Canal的开源增量数据订阅&消费中间件的更多相关文章

  1. 谈谈对Canal(增量数据订阅与消费)的理解

    概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB). 起源:早期,阿里巴巴B2B公司 ...

  2. 对 Canal (增量数据订阅与消费)的理解

    概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 起源:早期,阿里巴巴B2B公司 ...

  3. Canal( 增量数据订阅与消费 )的理解及应用

    canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 起源:早期,阿里巴巴B2B公司因为存 ...

  4. 阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的 ...

  5. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...

  6. alibaba/canal 阿里巴巴 mysql 数据库 binlog 增量订阅&消费组件

    基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引) search build 业务cache刷新 价格变化等重要业务消息 项目介绍 名称:ca ...

  7. canal —— 阿里巴巴mysql数据库binlog的增量订阅&消费组件

    阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自  https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...

  8. 使用Canal作为mysql的数据同步工具

    一.Canal介绍 1.应用场景 在前面的统计分析功能中,我们采取了服务调用获取统计数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与 ...

  9. Canal - 数据同步 - 阿里巴巴 MySQL binlog 增量订阅&消费组件

    背景 早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更.从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变 ...

随机推荐

  1. 解决 IDEA 无法找到 java.util.Date 的问题

    原文首发于 studyidea.cn点击查看更多技巧 问题 最近在项目中频繁使用到 java.util.Date,但是使用 IDEA 提示查找 Date 类,却无法找到 java.util.Date. ...

  2. Kubernetes Job与CronJob(离线业务)

    Kubernetes Job与CronJob(离线业务) Job Job分为普通任务(Job)  一次性执行 应用场景:离线数据处理,视频解码等业务 官方文档:https://kubernetes.i ...

  3. Swagger实例分享(VS+WebApi+Swashbuckle)

    Swagger实例分享(VS+WebApi+Swashbuckle) Swagger可以很方便的为发布的WebApi自动生成优雅的文档,不需额外自己编写,只需为项目配置好,是一个很好用的工具,做一个简 ...

  4. ASP.NET MVC 中枚举生成下拉框

    最近公司在开发财务系统,在工作中遇到不少的地方需要下拉框. 但是枚举框中数据的内容又来自枚举. 枚举代码如下: public class EnumDemo { public enum Value { ...

  5. Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天

    序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务 ...

  6. Linux文本文件——文本编辑器Vim

    Linux文本文件——文本编辑器Vim 摘要:本文主要学习在Linux系统中使用Vim文本编辑器编辑文本. 什么是Vim Vim是一个基于文本界面的编辑工具,使用简单且功能强大.更重要的是,Vim是所 ...

  7. 我脑中的JVM大全附带Java8的特性

    Java虚拟机-sun classic vm 世界上第一款商用的Java虚拟机. 只能使用纯解释器的方式来执行Java代码. Java虚拟机-ExactVM Exact Memory Manageme ...

  8. mac os catalina mongodb最新安装流程

    1.brew安装 不推荐用brew,因为现在mongodb闭源了,brew里已经搜索不到mongodb,不过还是可以用brew安装的,这篇就不写了. 2.官网下载 直接去官网下载一个zip,解压完放到 ...

  9. bootstrap的表单form

    (1)默认表单 <form> <div class="form-group"> <label class="control-label&qu ...

  10. 9.InfluxDB-InfluxQL基础语法教程--LIMIT and SLIMIT 子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) LIMIT和SLIM ...