Seata
今日了解到阿里开源的分布式事务框架——seata,我觉得大脑设计真的才是王道,之前一直没有TC的概念。 记得以前做的就是一个Rollback表来做TCC,而没有想到使用一个TC Server实现。
Seata支持微服务框架,支持AT、TCC、SAGA。
TC:事务协调者,维护全局和分支事务的状态,驱动全局事务提交或回滚。 集中式管理的一个实现,本身就是从事务外延而来,放大了事务的实现。
TM:事务管理器。定义全局事务的范围:开始全局事务、提交或回滚全局事务。 发起方。
RM:资源管理器。管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。 需要注册到TC上以实现被全局管理。
悬挂问题:占用了资源,而没有释放。
AT模式:两阶段提交协议演变,回滚日志用于反向补偿,提交: SELECT FOR UPDATE。
Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。
Metris。
部署:支持单点、HA、Docker、K8s、Helm方式。
本质上是对事务的一个升级,将单个事务,变成多个事务,还实现了多个框架的集成,Template模式。
Spring Cloud中使用:github.com/seata/seata…
- 添加依赖
- 配置
- 数据源
- un_do_log表
- 集群内部署seata-server
- 使用@GlobalTransactional开启全局事务。
JustAuth
JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录SDK,让登录变得So easy!
可以阅读源码,深入了解授权码模式,也可以集成更多登录。
其目标是对接更多的登录,让授权码模式更加容易。
这个很之前想做一个通用API对接的一个道理。