三十八、AT模式

目录

一、定义

1、AT模式工作原理如下:

2、优点:

3、缺点:

4、流程:

二、AT模式与XA模式的区别

三、AT模式的脏写问题

四、实现AT模式


一、定义

  • AT模式是指使用AT命令进行串口通信的工作模式。
  • AT命令是由两个字符组成的命令,用于控制设备,例如控制调制解调器或移动电话。
  • AT命令可以通过串口发送到设备,设备会根据命令执行相应操作并回复结果。
  • AT模式在嵌入式系统开发中广泛使用,特别是在GSM、GPRS、GPS和WiFi等无线通信模块的控制中。
  • AT模式是通过串口通信发送AT命令来控制设备的一种工作模式,具有操作简单、可靠性高、兼容性强等特点。

1、AT模式工作原理如下:

  1. 设备进入AT模式。在开发阶段,可以通过特殊的启动方式或者设置相关寄存器来将设备进入AT模式。

  2. 发送AT命令。用户将需要执行的AT命令按照特定格式组装成字符串,并通过串口发送到设备。

  3. 设备执行AT命令并返回结果。设备接收到AT命令后,会根据命令执行相应的操作,然后将执行结果通过串口回复给用户,用户可以通过串口读取回复数据。

  4. 继续发送AT命令或退出AT模式。用户可以继续发送AT命令控制设备,也可以通过特定的命令退出AT模式,让设备返回正常工作模式。

2、优点:

  • AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
  • 一阶段完成直接提交事务,释放数据库资源,性能比较好
  • 利用全局锁实现读写隔离
  • 没有代码侵入,框架自动完成回滚和提交

3、缺点:

  • 两阶段之间属于软状态,属于最终一致
  • 框架的快照功能会影响性能,但比XA模式要好很多

4、流程:

阶段一RM的工作:

  1. 注册分支事务
  2. 记录undo-log(数据快照)
  3. 执行业务sql提交
  4. 报告事务状态

阶段二提交时RM的工作:

  1. 删除undo-log即可

阶段二回滚时RM的工作:

  1. 根据undo-log恢复数据到更新前

二、AT模式与XA模式的区别

1、

  • XA模式一阶段不提交事务,锁定资源;
  • AT模式一阶段直接提交,不锁定资源。

2、

  • XA模式依赖数据库机制实现回滚;
  • AT模式利用数据快照实现数据回滚。

3、

  • XA模式强一致;
  • AT模式最终一致

三、AT模式的脏写问题

  • 在AT模式下,由于没有运行操作系统的支持,无法进行文件系统的管理和维护,因此可能会存在脏写问题。
  • 脏写问题是指在写入数据时,由于突然断电或其他意外情况导致写入的数据只写了部分,或者写入的数据与原来的数据不同步,导致数据出现错误或丢失的情况。
  • 在写入之前有其他事务修改了数据。

为避免脏写问题,可以采取以下措施:

  1. 使用原子操作:在写入数据时,采用原子操作,保证一次性将数据写入到设备中。

  2. 使用缓存技术:在写入数据时,可以先将数据写入到缓存中,等到所有数据都写入完成后再一次性将数据写入到设备中,这样可以减少写入中断的风险。

  3. 定期进行数据备份:对于重要的数据,可以定期进行备份,以免发生意外情况时丢失数据。

  4. 对于可能导致脏写的操作,进行异常处理:在数据写入时,加入异常处理模块,对可能发生的异常进行处理,保证数据的完整性和正确性。

  5. 在提交之前,为事务加上全局锁,避免其他事务的修改。

写隔离:

四、实现AT模式

1、修改yml文件

seata:
    data-source-proxy-mode: AT # 开启数据源代理的AT模式

2、重启服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/224277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes(K8s)DashBoard的使用-11

DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以…

redis应用-分布式锁

目录 什么是分布式锁 分布式锁的基本实现 引入过期时间 引入校验id 引入lua 引入看门狗 引入redlock算法 什么是分布式锁 在一个分布式系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于"线程安全"的问题. 而…

2023_Spark_实验二十七:Linux中Crontab(定时任务)命令详解及使用教程

Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ…

华为数通---配置ARP安全综合功能案例

简介 ARP(Address Resolution Protocol)安全是针对ARP攻击的一种安全特性,它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击,还可以防范网段扫描攻击…

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示,构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据,我们提供了一个全面的电影信息平台…

Android Glide自定义AppCompatImageView切分成若干小格子,每个小格子onDraw绘制Bitmap,Kotlin(1)

Android Glide自定义AppCompatImageView切分成若干小格子,每个小格子onDraw绘制Bitmap,Kotlin(1) 垂直方向的RecyclerView,每行一个AppCompatImageView,每个AppCompatImageView被均匀切割成n个小格子&#…

[Geek Challenge 2023] web题解

文章目录 EzHttpunsignn00b_Uploadeasy_phpEzRceezpython EzHttp 按照提示POST传参 发现密码错误 F12找到hint,提示./robots.txt 访问一下,得到密码 然后就是http请求的基础知识 抓包修改 最后就是 我们直接添加请求头O2TAKUXX: GiveMeFlag 得到flag…

RabbitMQ创建新用户,并给用户添加角色和授权

一、进入容器 1.1 查看运行容器的详细信息 docker ps -a1.2 进入容器命令 docker exec -it 容器ID /bin/bash 或 docker exec -it 容器name bash 1.3 退出容器命令 exit 或者 CtrlQP 二、操作RabbitMQ 2.1 查看用户列表 注:先进入到容器内部 rabbitmqctl list_user…

云服务器与nas实现在冷热资源访问,nginx代理

在实际项目中,我们的文件存储是一个必不可少的环节,本博主了解到现在的存储方案有 购买纯系统的云服务器,自己安装个mino,再使用nginx代理给web使用购买OSS服务,现在有云厂商都有提供,储存价格也挺便宜的,…

[论文阅读]DETR

DETR End-to-End Object Detection with Transformers 使用 Transformer 进行端到端物体检测 论文网址:DETR 论文代码:DETR 简读论文 这篇论文提出了一个新的端到端目标检测模型DETR(Detection Transformer)。主要的贡献和创新点包括: 将目标检测视为一…

定时补偿方案

1:需求描述 支持NVR升级后通道数变更,完成升级后,设备SDK上报通道数量给A平台,A平台将NVR通道数量同步给B平台,B平台自动调用C平台接口,同步通道数量给C平台,C平台重新生成通道序列号&#xff…

U-boot(八):官方uboot移植

本文主要探讨从ubboot官方移植uboot到x210。 基础 确定设备的配置文件 通过board.cfg中的cpu型号(s5pc1xx)确定设备的配置文件 头文件:include/configs/s5p_goni.h cpu: u-boot-2013.10\arch\arm\cpu\armv7 board: u-boot-2013.10\b…

JVM 执行引擎篇

机器码、指令、汇编语言 机器码 各种用二进制编码方式表示的指令,叫做机器指令码。开始,人们就用它采编写程序,这就是机器语言。机器语言虽然能够被计算机理解和接受,但和人们的语言差别太大,不易被人们理解和记忆&a…

用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

1、模式标准 模式名称:适配器模式 模式分类:结构型 模式意图:适配器模式的意图是将一个类的接口转换成客户端期望的另一个接口。适配器模式使原本接口不兼容的类可以一起工作。 结构图: 适用于: 系统需要使用现有的…

【从0配置JAVA项目相关环境2】node.js + 前端 从配置到运行

运行前端项目 写在最前面一、安装node.js二、运行前端项目1. 运行 npm install2. 运行 npm run serve报错Error: error:0308010C:digital envelope routines::unsupported方法1:设置 NODE_OPTIONS (没用)方法2:更改Node.js版本方法…

2023字节跳动软件测试工程师面试题及答案分享

相信大家都有这样一个忧虑就是面试,不管我们要找什么工作,面试都会是必不可少的,下面是整理出来的面试题和我的一些见解觉得不对的在评论区留言! 1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案&…

2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告

今天分享的是机器人系列深度研究报告:《2022年拉丁美洲中东和非洲医疗机器人市场及全球概况报告》。 (报告出品方:Apollo Reports) 报告共计:195页 研究方法论 2.1通过桌面研究和内部存储库的假设 a)最初&#xff…

多传感器融合SLAM在自动驾驶方向的初步探索的记录

1. VIO的不可观问题 现有的VIO都是解决的六自由度的问题, 但是对于行驶在路面上的车来说, 通常情况下不会有roll与z方向的自由度, 而且车体模型限制了不可能有纯yaw的变换. 同时由于IMU在Z轴上与roll, pitch上激励不足, 会导致IMU在初始化过程中尺度不准以及重力方向估计错误,…

AWS 日志分析工具

当您的网络资源托管在 AWS 中时,需要定期监控您的 AWS CloudTrail 日志、Amazon S3 服务器日志和 AWS ELB 日志等云日志,以降低任何潜在的安全风险、识别严重错误并确保满足所有合规性法规。 什么是 Amazon S3 Amazon Simple Storage Service&#xff…

C#图像处理OpenCV开发指南(CVStar,07)——通用滤波(Filter2D)的实例代码

1 函数定义 void Filter2D (Mat src, Mat dst, int ddepth, InputArray kernel, Point anchor Point(-1,-1), double delta 0, int borderType BORDER_DEFAULT ) 1.1 原型 #include <opencv2/imgproc.hpp> Convolves an image wit…