mybatis&canal&seata
文章平均质量分 90
mybatis和canal学习
huan_1993
这个作者很懒,什么都没留下…
展开
-
seata序列化日期类型出错
一、背景最近在整合seata的过程中,发现如果业务表中存在 datetime 的数据类型,那么在分布式事务中,修改这个字段的值时,会出现如下错误。此处提供2种解决方案。com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Type id handling not implemented for type java.lang.Object (by serializer of type com.fasterxml.jackson.dat原创 2021-10-11 17:02:15 · 2624 阅读 · 2 评论 -
Seata分布式事务失败通知
一、背景在我们使用Seata作为分布式事务时,有些时候我们的分布式时候并不是每次都可以成功的,而对于这些失败的分布式事务就需要进行通知。这篇文章简单记录一下如何实现通知。二、功能实现此处模拟邮件通知,但是不真正发送邮件,只是简单记录一个日志。三、注意事项1、 假设我们的分布式事务回滚失败,在AT模式中是会锁定表记录数据的。后期需要获取这条记录的全局锁操作,都会失败。举例:假设存在如下数据表记录数据账号金额zhangsan100zhangsan这条记录参与分布式原创 2021-10-09 10:44:09 · 811 阅读 · 5 评论 -
seata代码控制回滚和临时挂起分布式事物
一、说明此处只是简单的记录一下,使用了 Seata后,如何手动 回滚分布式事物和临时挂起分布式事务,Seata的整合不做详细的说明。二、功能实现1、手动回滚分布式事物class 手动回滚分布式事物{ public void 部分代码() { if (RootContext.inGlobalTransaction()) { try { GlobalTransactionContext.reload(RootContext.原创 2021-09-29 09:33:53 · 685 阅读 · 0 评论 -
seata整合多数据源
seata整合多数据源一、背景二、整合步骤1、seata server的搭建2、引入数据源切换组件3、引入seata组件4、配置多数据源5、关闭seata自己默认的数据源代理6、配置seata事物分组7、业务库创建undo_log表8、xid的传递9、代码中使用数据源切换10、业务方法开启分布式事物三、注意事项四、完整代码一、背景在这篇文章中,我们使用Seata整合一下多数据源的场景。多数据源切换的功能我们使用dynamic-datasource-spring-boot-starter来完成,并且这个组原创 2021-09-28 10:37:40 · 1787 阅读 · 1 评论 -
springcloud整合seata
springcloud整合seata一、背景二、项目结构三、实现功能:四、项目使用到的技术五、整合步骤1、引入spring-cloud-starter-alibaba-seata jar包2、涉及到的业务库操作1、业务库需要存在 undo_log 表2、业务表主键3、页面中自动更新时间戳3、开启数据源代理1、自动配置数据源代理2、手动配置AT模式数据源代理1、配置文件关闭自动数据源代理2、配置配置数据源4、传递 xid5、事务分组和seata server对应上6、注册中心和配置中心7、业务方法加上@Glo原创 2021-09-27 14:35:45 · 796 阅读 · 1 评论 -
Seata整合SpringBoot和Mybatis
Seata整合SpringBoot和Mybatis一、背景二、实现功能三、每个服务使用到的技术1、账户服务2、订单服务四、服务实现1、账户服务实现1、引入jar包2、项目配置3、建表语句2、订单服务实现1、引入jar包2、项目配置3、配置数据源代理4、配置RestTemplate传递xid5、@GlobalTransactional分布式事务3、事务分组需要和配置中心对应上五、演示1、没有发生异常2、发生异常六、可能遇到的问题1.Nacos 作为 Seata 配置中心时,项目启动报错找不到服务。如何排查,如原创 2021-09-24 16:39:02 · 647 阅读 · 2 评论 -
seata整合nacos完成分布式的部署
seata整合nacos完成分布式的部署一、背景二、部署机器三、部署步骤1、在seata上创建命名空间2、下载对应版本的seata3、单机启动1、修改seata配置文件1、修改注册中心为nacos2、修改配置中心为nacos2、导入配置到nacos中1、存储模式设置为db,建表2、简化的配置3、完整的配置4、导入到nacos中3、启动seata server4、查看seata server 列表4、seata server 集群启动1、拷贝seata server配置到3台机器上2、查看seata serv原创 2021-09-15 16:24:19 · 1913 阅读 · 0 评论 -
Seata的一些概念
Seata的一些概念一、什么是seata二、AT模式的介绍1、前提条件2、整体机制3、读写隔离的实现1、写隔离2、读隔离三、事务分组1、事务分组是什么?2、通过事务分组如何找到后端集群?3、为什么这么设计,不直接取服务名?4、事物分组的例子1、TC的异地多机房容灾2、单一环境多应用接入3、client的精细化控制4、Seata的预发与生产隔离四、api支持1. 远程调用事务上下文的传播2. 事务的暂停和恢复五、可能遇到的问题1、undo_log表log_status=1的记录是做什么用的?2、如何保证事物的转载 2021-09-13 15:09:42 · 270 阅读 · 0 评论 -
Canal Server发送binlog消息到Kafka消息队列中
Canal Server发送binlog消息到Kafka消息队列中一、背景二、需要修改的地方1、canal.properties 配置文件修改1、修改canal.serverMode的值2、修改kafka配置2、修改 instance.propertios 配置文件3、canal发消息到mq性能优化三、kafka接收消息1、canal 发送过来的消息2、监听消息3、获取消息四、MQ配置相关的参数五、MQ接收binlog代码六、参考文章一、背景在上一篇文章中,我们使用 Canal Admin 搭建了Can原创 2021-09-03 11:48:00 · 572 阅读 · 0 评论 -
CanalAdmin搭建Canal Server集群
一、背景使用CanalAdmin来搭建一个canal集群。二、机器情况服务名机器ip备注canal admin127.0.0.1:8089canal admin 机器canal server 1127.0.0.1:11111本地canal server机器canal server 2127.0.0.1:11113本地canal server机器zk127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181本地zk集群原创 2021-06-05 10:13:49 · 5551 阅读 · 0 评论 -
Prometheus监控Canal
@TOC一、背景简单记录下,使用Prometheus对Canal进行监控。二、实现步骤1、修改prometheus.yml配置文件vim /Users/huan/soft/prometheus/prometheus-2.25.0/prometheus.ymlscrape_configs: - job_name: 'canal' scrape_interval: 30s static_configs: - targets: ['localhost:11112'] # 端原创 2021-06-05 09:48:38 · 601 阅读 · 0 评论 -
Canal的简单使用
Canal的简单实用一、背景二、canal的工作原理三、安装canal1、mysql配置相关1、检测binlog是否开启2、mysql开启binlog3、创建canal用户2、canal配置相关1、下载canal2、配置一个instance1、复制`conf/example`文件夹2、修改instance的配置3、instance注意事项1、配置需要关注那个库和那个表的binlog2、mysql链接时的起始位置3、mysql解析关注表定义4、mysql链接的编码5、instance.properties配置原创 2021-06-02 15:03:18 · 1658 阅读 · 1 评论 -
Sharding-JDBC自定义复合分片算法
Sharding-JDBC自定义复合分片算法一、背景二、需求1、对于客户端操作而言2、对于运营端操作而言三、分片算法1、客户id和订单id的生成规则2、 确定数据落在那个表中3、举例说明1、客户id确定数据表2、订单id确定数据表四、实现步骤1、建表语句2、引入Sharding-JDBC的jar包3、编写分片算法4、分表配置5、mapper文件写法五、完整代码六、参考文档一、背景最近在看 Sharding-JDBC方面的内容,此处简单记录一下使用Sharding-JDBC中的复合分片键来实现分表的方法。原创 2021-05-25 16:20:11 · 1372 阅读 · 3 评论 -
使用Mybatis的TypeHandler加解密数据
使用Mybatis的TypeHandler加解密数据一、背景二、解决方案三、需求四、实现思路1、编写一个实体类,凡是此实体类的数据都表示需要加解密的2、编写一个加解密的`TypeHandler`3、sql语句中写法4、配置文件中指定Typehandler的包路径5、编写后台代码6、测试结果五、实现代码六、参考文档一、背景在我们数据库中有些时候会保存一些用户的敏感信息,比如: 手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的。假如: 黑客黑进了数据库,或者离职人员导出了数据,那么就可能导原创 2021-05-19 09:27:54 · 1371 阅读 · 31 评论 -
mybatis自定义分页拦截器
最近看了一下项目中代码,发现系统中使用的mybatis分页使用的是mybatis自带的分页,即使用RowBounds来进行分页,而这种分页是基于内存分页,即一次查出所有的数据,然后再返回分页需要的数据。断点跟踪mybatis的源码可以看到是这个方法中org.apache.ibatis.executor.resultset.FastResultSetHandler.skipRows(Res...原创 2015-10-30 23:04:45 · 517 阅读 · 0 评论 -
ssm三大框架整合
一个简单的spring,springmvc,mybatis三大框架整合1.spring整合springmvc<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001...原创 2016-12-13 23:30:41 · 149 阅读 · 0 评论