SOFA Weekly | Occlum 发布新版本,Seata QA 整理

自作多情 提交于 2021-01-19 00:08:14
SOFA WEEKLY | 每周精选,筛选每周精华问答
同步开源进展,欢迎留言互动
SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,也是在金融场景里锤炼出来的最佳实践。
SOFAStack 官网: https://www.sofastack.tech
SOFAStack: https://github.com/sofastack

  每周读者问答提炼  

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

1吴小彬 提问

请教下,如果分支事务中使用了分库分表中间件(shardingsphere-proxy、mycat 等),Seata-AT 模式是不是不能用的?是只可以用 TCC 模式吗?现在的 shardingsphereProxy 中间件(不是 shardingsphereJdbc )用 AT 模式,它对微服务来说就是一个 MySQL 连接,它是怎么知道微服务调用链中的 xid 的?

A:可以用,shardingsphere 4.1 支持 Seata AT, proxy 我估摸着有点悬,因为他属于一个代理层。Jdbc 是直接在应用的 Jdbc 层提供服务的,所以 AT 可以很好的支持。


2谭玖朋 提问:

关于 AT 模式,第一阶段执行完后生成行锁然后注册分支事务,其中的行锁具体是指什么锁呢?因为发现第一阶段执行完后,其实再查数据的话是已经改变了。所以关于这个行锁这么解释?

A:Select for update 的时候,首先 Seata 会代理这个语句,去查询 TC 这个行有没有锁住,如果没锁住,客户端业务用了 for update 那么就拿到了本地锁,此时因为本地锁排他,这个时候没有全局锁的 for update 就是分布式下的读已提交。

      不是允许脏读,是读已提交。读未提交是默认的,所以只有在你 update 的时候(update 是当前读),但是如果你的 update 是基于快照度的 select 结果,可能会出现事与愿违的结果,如果你要基于某个数据来 update,要么 for update 来读分布式下的已提交,要么就用 update x=x-1 之类的写法,因为提交时会抢占全局锁,没抢到会 rollback,释放当前锁进行重试,这样就能保证抢到锁的时候,update 的数据当前读是分布式下的读已提交并修改。

       目前好像没人写关于 AT 行锁及全局锁部分源码有分析讲解的资料,如果感兴趣可以去阅读一下,写出来投稿给我们。


  本周推荐阅读  



   Occlum 项目进展  

本周发布详情如下:

1Occlum 发布 v0.19.0 版本 主要变更如下:
  • 同时兼容 Glibc 和 musl libc的应用

  • 支持基于 DCAP (Intel SGX Data Center Attestation Primitives) 的远程验

  • 修复了内存泄漏问题

详细参考:
https://github.com/occlum/occlum/releases/tag/0.19.1


本文归档在 sofastack.tech。






本文分享自微信公众号 - 金融级分布式架构(Antfin_SOFA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!