SOFA Weekly | 1.9直播预告、MOSN 发版、Saga 状态机设计器视频教程

2020-01-03 · SOFA 团队 ·

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

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

weekly

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

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

SOFAStack: https://github.com/sofastack

每周读者问答提炼

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

Seata:Simple Extensible Autonomous Transaction Architecture,是一套一站式分布式事务解决方案,提供了 AT、TCC、Saga 和 XA 事务模式,其中长事务解决方案 Saga 模式有着无锁高性能、异步架构高吞吐的优势。

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

Saga 状态机在线设计器:http://seata.io/saga_designer/index.html

Saga 状态机设计器视频教程:http://seata.io/saga_designer/vedio.html

1、@李宇博 提问:

您好,我这边看视频直接把 Catch 直接拖到 serviceTask 上,好像没有生效,需要连线还是配置什么属性吗?

A:没有生效是指什么?Catch 要连一个线到一个其它的 state,意思是捕获到异常后,去执行一个分支,这个 state可以是任何类型的 state,比如 CompensationTrigger、ServiceTask,通常是 CompensationTrigger,立即触发补偿。

我是直接连接到 compensateTrigger 上的,然后我手动抛出异常,并没有执行补偿方法,而是在不停的重试调用之前抛出异常的方法。

A:需要在线上配置异常类型:

线上配置异常类型

2、@J~杰 提问:

咨询一个问题,AT 模式分支事物注册的时候会获取锁,锁名就是和 table+主键有关系的,由于压力测试的时候,有个 check 去数据库查询同一个 rowkey,导致直接获取锁失败,在业务上就是业务失败回滚了,这种有啥办法?

A:你的意思是热点数据问题吗?

可以理解成热点数据,我这边的测试场景就是下单减库存,2个微服务,库存由于基本上是同一行库存数据。

A:热点数据撞锁是正常的,你可以用自旋锁,让其它事务等待一下再获取锁,而不是立即失败。http://seata.io/zh-cn/docs/user/configurations.html

配置

本地调用 Dubbo 微服务是可以的,用 Saga 状态机就报这个问题,报服务没有提供者。

A:你的 Service 是用的 XML 注册的还是用的注解注册的?

注解的方式。

A:嗯嗯。你尝试用 XML 方法注册一个 Bean 看看行不行,机制上可能有不一样,因为 Saga 状态机是通过 getBean 反射去调方法。而 Dubbo 的注解是通过代理的方式来注入一个对象,这个对象是不是一个有完全成功的 Bean,不确定。之前我遇到过 TCC 用注解不好使,用 XML 好使的问题。

本周推荐阅读

SOFARegistryLab 系列

SOFA 项目进展

本周发布详情如下:

1、发布 MOSN v0.9.0 版本,主要变更如下: i. 重构了包引用路径,从 sofastack.io/sofa-mosn 变更为 mosn.io/mosn; ii. 支持变量机制,accesslog 修改为使用变量机制获取信息; iii. 修复在 proxy 协程 panic 时导致的内存泄漏; iv. 修复在特定的场景下,读写协程卡死导致的内存泄漏; v. 修复 HTTP2 Stream 计数错误的 bug;

详细发布报告:https://github.com/mosn/mosn/releases/tag/0.9.0

社区直播预告

SOFAChannel#10

新年快乐~2020年第一期线上直播来啦,SOFAChannel#10 将和大家一起探讨 《分布式事务 Seata 长事务解决方案 Saga 模式详解》,将从金融分布式应用开发的痛点出发,结合 Saga 分布式事务的理论和使用场景,讲解如何使用 Seata Saga 状态机来进行服务编排和分布式事务处理,构建更有弹性的金融应用,同时也会从架构、原理、设计、高可用、最佳实践等方面剖析 Saga 状态机的实现。

主题:SOFAChannel#10:分布式事务 Seata 长事务解决方案 Saga 模式详解

时间:2020年1月9日(下周四)19:00-20:00

嘉宾:陈龙(花名:屹远) 蚂蚁金服分布式事务核心研发、Seata Committer

形式:线上直播

报名方式:点击“这里”,即可报名