C#基于阿里canal监听mysql binlog kafka模式
前言
没接触过java spring cloud之前对aop的概念很薄弱,基于c#的通常都是微软封装好的filter类,进而实现就好。很早之前就想做个缓存框架,之前的redis缓存都是通过判断有没有缓存进而插入和更新,大量的重复代码,缓存利用率不高。真正自己设计的时候,发现在高一致模式下同步是个问题,高一致即数据库表与缓存保持一致。幸好,发现了阿里开源的canal正好满足需求。正所谓技术大多数服务于业务场景,本文就是C#基于阿里canal监听mysql binlog kafka模式实现binlog的组件化。
符合的业务场景有
监听某张表进行监听,进行推送,如发现订单,推送到各个系统【微服务体系下,如果有订单中心就不存在这个事】
redis缓存的高一致性模式,即数据库表与缓存保持一致
进行监听
在startup ConfigureServices中配置
services.AddBinlog(options =>
{
options.SubTableList = new List() {
"库名.表名"
//"zcy-test"//监听的表名 库名由于多环境不一致需要配置..
};
//options.CanalDestination = _config.Get("CanalDestination");//问DBA 要 Canal名称
//options.CanalHost = _config.Get("CanalHost");//问DBA