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
12canal: 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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复