我是靠谱客的博主 真实云朵,这篇文章主要介绍springboot集成canal,现在分享给大家,希望可以做个参考。

canal,根据官方的解释,也就是用于同步数据库的增量数据到其他的存储应用

作用:

不需要在修改数据库的数据后自己手动进行redis中的数据进行同步操作

可以通过将数据库的数据同步到其他的存储应用,达到提高性能的作用

如:将本需要访问mysql的数据,同步修改到redis中,让更多的访问直接访问到redis,减少访问mysql数据库,从而达到提高性能的作用。

原理:

MySQL有主从机制(读写分离,需要开启bin-log模式,主节点会把写操作记录到一个文件,后续会把数据库同步到从节点),canal则伪装成从节点,从主节点获取到一份写操作记录,然后再进行同步到其他地方(redis,es,mongoDB等)

需要去官网下载canal并安装

1、canal的start依赖

复制代码
1
2
3
4
5
6
<dependency> <groupId>top.javatool</groupId> <artifactId>canal-spring-boot-starter</artifactId> <version>1.2.1-RELEASE</version> </dependency>

2、配置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
canal: server: Canal服务部署的地址:11111 destination: example logging: level: root: info top: javatool: canal: client: client: AbstractCanalClient: error

3、添加Handler

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Slf4j @Component @CanalTable(value = "表名") public class OrderaInfoHandler implements EntryHandler<T> {//T为自定义接收封装的类型 @Override public void insert(T t) { log.info("当有数据插入的时候会触发这个方法); } @Override public void update(T before, T after) { log.info("当有数据更新的时候会触发这个方法); } @Override public void delete(T t) { log.info("当有数据删除的时候会触发这个方法); } }

4、对应的接收数据的类,需要用@Table(name="表名")指定表名,以及@Column(name="列名")指定属性对应的列名。

注意:接收的类型不能是基本数据类型。

最后

以上就是真实云朵最近收集整理的关于springboot集成canal的全部内容,更多相关springboot集成canal内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部