目录
一、定义
1、AT模式工作原理如下:
2、优点:
3、缺点:
4、流程:
二、AT模式与XA模式的区别
三、AT模式的脏写问题
四、实现AT模式
一、定义
- AT模式是指使用AT命令进行串口通信的工作模式。
- AT命令是由两个字符组成的命令,用于控制设备,例如控制调制解调器或移动电话。
- AT命令可以通过串口发送到设备,设备会根据命令执行相应操作并回复结果。
- AT模式在嵌入式系统开发中广泛使用,特别是在GSM、GPRS、GPS和WiFi等无线通信模块的控制中。
- AT模式是通过串口通信发送AT命令来控制设备的一种工作模式,具有操作简单、可靠性高、兼容性强等特点。
1、AT模式工作原理如下:
设备进入AT模式。在开发阶段,可以通过特殊的启动方式或者设置相关寄存器来将设备进入AT模式。
发送AT命令。用户将需要执行的AT命令按照特定格式组装成字符串,并通过串口发送到设备。
设备执行AT命令并返回结果。设备接收到AT命令后,会根据命令执行相应的操作,然后将执行结果通过串口回复给用户,用户可以通过串口读取回复数据。
继续发送AT命令或退出AT模式。用户可以继续发送AT命令控制设备,也可以通过特定的命令退出AT模式,让设备返回正常工作模式。
2、优点:
- AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
- 一阶段完成直接提交事务,释放数据库资源,性能比较好
- 利用全局锁实现读写隔离
- 没有代码侵入,框架自动完成回滚和提交
3、缺点:
- 两阶段之间属于软状态,属于最终一致
- 框架的快照功能会影响性能,但比XA模式要好很多
4、流程:
阶段一RM的工作:
- 注册分支事务
- 记录undo-log(数据快照)
- 执行业务sql并提交
- 报告事务状态
阶段二提交时RM的工作:
- 删除undo-log即可
阶段二回滚时RM的工作:
- 根据undo-log恢复数据到更新前
二、AT模式与XA模式的区别
1、
- XA模式一阶段不提交事务,锁定资源;
- AT模式一阶段直接提交,不锁定资源。
2、
- XA模式依赖数据库机制实现回滚;
- AT模式利用数据快照实现数据回滚。
3、
- XA模式强一致;
- AT模式最终一致
三、AT模式的脏写问题
- 在AT模式下,由于没有运行操作系统的支持,无法进行文件系统的管理和维护,因此可能会存在脏写问题。
- 脏写问题是指在写入数据时,由于突然断电或其他意外情况导致写入的数据只写了部分,或者写入的数据与原来的数据不同步,导致数据出现错误或丢失的情况。
- 在写入之前有其他事务修改了数据。
为避免脏写问题,可以采取以下措施:
使用原子操作:在写入数据时,采用原子操作,保证一次性将数据写入到设备中。
使用缓存技术:在写入数据时,可以先将数据写入到缓存中,等到所有数据都写入完成后再一次性将数据写入到设备中,这样可以减少写入中断的风险。
定期进行数据备份:对于重要的数据,可以定期进行备份,以免发生意外情况时丢失数据。
对于可能导致脏写的操作,进行异常处理:在数据写入时,加入异常处理模块,对可能发生的异常进行处理,保证数据的完整性和正确性。
在提交之前,为事务加上全局锁,避免其他事务的修改。
写隔离:
四、实现AT模式
1、修改yml文件
seata:
data-source-proxy-mode: AT # 开启数据源代理的AT模式
2、重启服务