@@ -16,21 +16,63 @@ CanalSharp 是阿里巴巴开源项目 Canal 的 .NET 客户端。为 .NET 开
1616
1717关于 Canal 的更多信息请访问 https://github.com/alibaba/canal/wiki
1818
19- ## 二.如何使用
19+ ## 二.应用场景
2020
21- 1.安装Canal
21+ CanalSharp作为Canal的客户端,其应用场景就是Canal的应用场景。关于应用场景在Canal介绍一节已有概述。举一些实际的使用例子:
22+
23+ 1.代替使用轮询数据库方式来监控数据库变更,有效改善轮询耗费数据库资源。
24+
25+ 2.根据数据库的变更实时更新搜索引擎,比如电商场景下商品信息发生变更,实时同步到商品搜索引擎 Elasticsearch、solr等
26+
27+ 3.根据数据库的变更实时更新缓存,比如电商场景下商品价格、库存发生变更实时同步到redis
28+
29+ 4.数据库异地备份、数据同步
30+
31+ 5.根据数据库变更触发某种业务,比如电商场景下,创建订单超过xx时间未支付被自动取消,我们获取到这条订单数据的状态变更即可向用户推送消息。
32+
33+ 6.将数据库变更整理成自己的数据格式发送到kafka等消息队列,供消息队列的消费者进行消费。
34+
35+ ## 三.工作原理
36+
37+ CanalSharp 是 Canal 的 .NET 客户端,它与 Canal 是采用的Socket来进行通信的,传输协议是TCP,交互协议采用的是 Google Protocol Buffer 3.0。
38+
39+ ## 四.工作流程
40+
41+ 1.Canal连接到mysql数据库,模拟slave
42+
43+ 2.CanalSharp与Canal建立连接
44+
45+ 2.数据库发生变更写入到binlog
46+
47+ 5.Canal向数据库发送dump请求,获取binlog并解析
48+
49+ 4.CanalSharp向Canal请求数据库变更
50+
51+ 4.Canal发送解析后的数据给CanalSharp
52+
53+ 5.CanalSharp收到数据,消费成功,发送回执。(可选)
54+
55+ 6.Canal记录消费位置。
56+
57+ 以一张图来表示:
58+
59+ ![ 1537860226808] ( assets/668104-20180925182816462-2110152563.png )
60+
61+ ## 五.快速入门
62+
63+ ### 1.安装Canal
2264
2365Canal的安装以及配置使用请查看 https://github.com/alibaba/canal/wiki/QuickStart
2466
25- 2.建立一个.NET Core App项目
67+ ### 2.建立一个.NET Core 控制台项目
2668
27- 3.为该项目从 Nuget 安装 CanalSharp
69+ ### 3.为该项目从 Nuget 安装 CanalSharp
2870
2971```` shell
3072Install-Package CanalSharp.Client
3173````
3274
33- 4.建立与Canal的连接
75+ ### 4.建立与Canal的连接
3476
3577```` csharp
3678// canal 配置的 destination,默认为 example
@@ -41,15 +83,59 @@ var connector = CanalConnectors.NewSingleConnector("127.0.0.1", 11111, destinati
4183connector .Connect ();
4284// 订阅,同时传入Filter,如果不传则以Canal的Filter为准。Filter是一种过滤规则,通过该规则的表数据变更才会传递过来
4385connector .Subscribe (" .*\\\\ ..*" );
44- // 获取消息但是不需要发送Ack来表示消费成功
86+ // 获取数据但是不需要发送Ack来表示消费成功
4587connector .Get (batchSize );
46- // 获取消息并且需要发送Ack表示消费成功
88+ // 获取数据并且需要发送Ack表示消费成功
4789connector .GetWithoutAck (batchSize );
4890````
4991
50- 更多详情请查看 Sample
92+ 更多详情请查看 [ Sample] ( https://github.com/CanalSharp/CanalSharp/tree/master/sample/CanalSharp.SimpleClient )
93+
94+ ## 六.通过docker方式快速运行CanalSharp
95+
96+ ### 1.执行命令通过docker方式运行 mysql与canal
97+
98+ ```` shell
99+ git clone https://github.com/CanalSharp/CanalSharp.git
100+ cd docker
101+ docker-compose up -d
102+ ````
103+
104+ ### 2.使用navicat等数据库管理工具连接mysql
105+
106+ ip:运行docker的服务器ip
107+
108+ mysql用户:root
109+
110+ mysql密码:000000
111+
112+ mysql端口:4406
113+
114+ 默认提供了一个test数据库,然后有一张名为test的表。
115+
116+ ![ 1537866852816] ( assets/668104-20180925182815646-1209020640.png )
117+
118+ ### 3.运行Sample项目
119+
120+ ### 4.测试
121+
122+ 执行下列sql:
123+
124+ ```` sql
125+ insert into test values (1000 ,' 111' );
126+ update test set name= ' 222' where id= 1000 ;
127+ delete from test where id= 1000 ;
128+ ````
129+
130+ ![ ] ( assets/ys.gif )
131+
132+ 可以看见我们分别执行 insert、update、delete 语句,我们的CanalSharp都获取到了数据库变更。
133+
134+ ## 七.接下来的工作
135+
136+ CanalSharp集群支持
51137
52- ## 三 .贡献代码
138+ ## 八 .贡献代码
53139
541401.fork本项目
55141
0 commit comments