SOFA Weekly | 线上直播合辑整理、Seata QA 整理

2024-01-17 04:48

本文主要是介绍SOFA Weekly | 线上直播合辑整理、Seata QA 整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SOFA WEEKLY | 每周精选,筛选每周精华问答

同步开源进展,欢迎留言互动

SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。

SOFAStack 官网: https://www.sofastack.tech

SOFAStack: https://github.com/sofastack

  每周读者问答提炼  

欢迎大家向公众号留言提问或在群里与我们互动

我们会筛选重点问题通过 

" SOFA WEEKLY " 的形式回复

1、@谢小东 提问:

请教一个问题,在使用 Seata AT 模式的时候,新增的一条数据,回滚之前我在 db 改了我刚新增的数据,这个时候如果我抛出异常,但是就不发回滚,该怎么处理?

A:不要在全局事务包裹之外进行对数据的并发操作,如果你这样做,就跳过了 AT 的全局锁,隔离性无法保证,如果你有这方面需求的,可以用 XA 模式,并且使用数据库自身带有排它锁的操作,数据库的自身支持了 XA 模式,就可以帮你保证隔离性。

你的意思就是我在这种情况下 XA 模式适合?XA 模式是行锁么?

A:XA 是数据库自身实现的隔离机制,AT 是统一到 TC 去竞争行锁,而没用到 AT 的地方修改数据库当然就不会去 TC 竞争行锁,隔离性只能保证再全局事务注解下的操作生效。

2、@彭兴家 提问:

请问 Seata 里说的全局锁和本地锁对应 MySQL 的什么锁呀?

A:全局锁就是从 TC 竞争的锁,本地锁就是参与方自己本地的 MySQL 连接,比如 update 不就有排他锁的作用吗,因为一阶段提交,连接释放了,这个本地数据库的锁就解开了。而全局锁是从 TC 拿的,这个锁保证了你的入口只要是分布式事务注解下,就会去竞争这个全局锁。保证了再分布式事务注解下的全局事务间的隔离性

谢谢,明白了。但这样的话,Seata 通过前置镜像回滚。在全局事物执行的过程中,要是其他项目(没在全局事物下的项目)对该条数据进行了修改,那么按照 Seata 的机制,前置镜像对比不同了就不能回滚,需要手动处理?

A:是的,需要人工介入,因为只有人为分析才能校准数据了。对 Seata 来说他只知道要把数据回滚到发生前,但是数据被干扰了,就无法回滚了。

理论上来说这种情况出现的几率很大呀,多个不同项目操作同一条数据。

A:全局事务,字面意思要理解一下。你让他不全局了,让它不覆盖到,如何保证隔离性?要么涉及到的库对应的应用全局使用 Seata AT,要么就换 XA,修改的数据,用 select for update,这个本地锁在二阶段下发通知前不会释放,保证了隔离性。

3、@苏龙飞 提问:

请问,现在我们的 cloud 项目中用了 Seata,数据库只有一个,然后发现性能不够,所以想换成多主从数据库,并且能和 Seata 兼容,有没有好的方案呀?

A:主从方案本就应该是允许暂时的不一致,只要你保证读写都需要的时候,一定是主库,并把主库的 datasource 代理掉就好了,保证需要读后马上写的,一定要是主库操作。

Seata:https://github.com/seata/seata

  SOFAChannel 部分合辑  

  • 人人都可以“机密计算”:Occlum 使用入门和技术揭秘 | 开源

  • 蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源

  • 不得不说的云原生隔离性 | SOFAChannel#16 直播回顾

  • 蚂蚁金服分布式链路组件 SOFATracer 埋点机制解析 | SOFAChannel#15 直播整理

  • 云原生网络代理 MOSN 扩展机制解析 | SOFAChannel#14 直播整理

  • 云原生网络代理 MOSN 多协议机制解析 | SOFAChannel#13 直播整理

  • 蚂蚁金服分布式事务实践解析 | SOFAChannel#12 直播整理

  • 从一个例子开始体验轻量级类隔离容器 SOFAArk | SOFAChannel#11 直播整理

  本周推荐阅读  

  • 蚂蚁集团如何在大规模 Kubernetes 集群上实现高 SLO?

  • 蚂蚁是如何改进 K8s 集群敏感信息的安全防护的?

本文归档在 sofastack.tech。

这篇关于SOFA Weekly | 线上直播合辑整理、Seata QA 整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614903

相关文章

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)