歡迎光臨
每天分享高質量文章

開源基於Canal的開源增量資料訂閱&消費中介軟體

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{
        public Task Handle(CanalBody notification)
        {         

            return Task.CompletedTask;;
        }
    }
    
  1. 在startUp 使用並註冊 該消費類
      
      services.AddCanalService(produce => produce.RegisterSingleton());

Canal.SqlParse 如何使用

目前只實現瞭解析mysql的邏輯,未來會加入sqlserver的解析邏輯!!

            services.AddMysqlParseService(connectionString);

在類的構造方法可註入:

如上圖,代表將canal-server的資料直接在另外的mysql庫裡面執行,等於2個mysql資料進行互相同步。

歐洲與中國的2個mysql庫 使用上述方法進行同步的測試

結果: 同步速度在100~200qps 

原文地址:https://www.cnblogs.com/yudongdong/p/11032062.html


.NET社群新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com 

贊(0)

分享創造快樂