SOFA Weekly | SOFA-Common-Tools 发布新版本, QA 整理

2020-12-25 · SOFA 团队 ·

SOFA WEEKLY | 每周精选,筛选每周精华问答 同步开源进展,欢迎留言互动

weekly.jpg

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

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

SOFAStack: https://github.com/sofastack

每周读者问答提炼

欢迎大家向公众号留言提问或在群里与我们互动 我们会筛选重点问题 通过 “ SOFA WEEKLY ” 的形式回复

1、@薛帅领 提问:

多数据源切换后,增加事务但不起作用(切数据源是执行方法后才切换的),本地事务及 Seate 分布式事务也不行,这个有什么好的解决方案吗?

A:Spring 本地事务注解本身就不支持多数据源事务,且如果你开启了本地事务,之后并不会进入你的切换数据源的切面。 在多数据源下,去掉本地事务注解就好了。用 globaltransactional 注解在多数据源的入口加上,多个数据源都被 Seata 代理的话,就会保证多数据源的事务。

2、@李天宇 提问

如果在分布式事务中,另一个线程做批处理 update 之类的,是否会锁住呢?

A:不会,另一个线程也要记得加上 globaltransactional 注解就行了。在 a 线程要提交之前要去尝试拿到它修改数据的全局锁的,如果 a 拿到了,但是还没到二阶段提交,b 也是要去尝试拿,拿不到就会不执行 SQL,等待全局锁释放了,也就是 a 发起的事务结束了,b 才能执行 SQL 提交。这样就保证了利用全局锁(粒度行级),来达到隔离性。

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

相关推荐阅读

SOFA 项目进展

本周发布详情如下:

SOFA-Common-Tools 发布1.3.0 版本,主要变更如下:

  • SOFA 线程池支持 ScheduledThreadPoolExecutor 与 ThreadPoolTaskScheduler
  • 新增 SofaConfigs 支持统一的配置获取
  • 新增 LogCode2Description 支持统一的错误码获取
  • 重构线程池实现,支持更丰富的监控数据
  • 所有组件统一 spce 属性获取逻辑
  • 修复配置日志输出到控制台时不生效的问题

详细参考:https://github.com/sofastack/sofa-common-tools/releases/tag/v1.3.0

image.png

祝大家圣诞节快乐!