seata 集群_微服务难点:阿里的分布式事务中间件,seata能上生产吗

03cce3984e9f931fc162795a1e7337fd.png

微服务盛行的时代,分布式事务成为了一个不可回避的问题。

什么是分布式系统

这里要区分一下集群跟分布式的区别。

集群就是相同的人,分担来做同一件事。

分布式呢,其实就是两个不同的人,合作着把一件事完成了,例如两个和尚抬水喝,一个抬前面,一个抬后面。

在我们的系统中,需要这么来理解,不同的服务器节点,部署不同的服务,例如订单服务,结账服务,这两个服务构成一个完成的买东西的体系。

eeb2ef5460efa08524369353f3511625.png

什么是本地事务

本地事务这个非常好理解,利用关系数据库来控制事务,关系数据库通常都具有ACID特性。

在传统的单系统应用中,所有的数据都会全部放到一个数据库里面,这时候在进行数据操作的时候,利用数据库的特性来完成事务的控制。

9f76ae9f4f88b96703833749e2c6f289.png

什么是分布式事务

在分布式系统中一次操作由多个服务协同完成。

这样的操作,是涉及到多个服务协同对数据库进行操作,可以是一个服务一个数据库,也可以是多个服务对应一个数据库,这么个协同完成一个事务的整个过程,叫做分布式事务。

538e656ea84072fe7c418df48ae5e95e.png

现有的解决方案有哪些

目前,在面对着分布式事务的时候,有4种解决方案,这些方案在网上有很多资料,有兴趣的同学可以自行百度查找即可。

1、两阶段提交(2PC, Two-phase Commit)

2、方案事件队列方案

3、TCC 补偿模式

4、缓存数据最终一致性

eb2a004d1af95cf0fa132bca6f5c093d.png

什么是Seata

A distributed transaction solution with high performance and ease of use for microservices architecture.

译文:一个分布式事务的解决方案具有高性能和易用性的微服务架构。

Seata有三部分组成

事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。 事务管理器TM:定义全局事务的范围:开始全局事务,提交或回滚全局事务。 资源管理器(RM):管理正在处理的分支事务的资源,与TC对话以注册分支事务并报告分支事务的状态,并驱动分支事务的提交或回滚。
d54ad9830729543970d5d40ceb9291eb.png

Seata最新版1.2.0做了啥

特征:

  • [ #2381 ]支持XA交易模式
  • [ #2206 ]支持REQUIRED,REQUIRES_NEW,SUPPORTS和NOT_SUPPORTED事务传播
  • [ #2112 ]支持使用多个SQL批量更新和删除
  • [ #2275 ]在TCC交易模式下支持hsf
  • [ #2108 ]支持zip bzip2 7z压缩器
  • [ #2328 ]支持隔离加载mysql 5.x和8.x jdbc驱动程序类
  • [ #2367 ]添加对Nacos 1.2的权限配置支持
  • [ #2359 ]支持property.never,propagation.mandatory和事务暂停和恢复API
  • [ #2418 ]支持fst序列化
  • [ #2135 ]支持SPI范围
  • [ #2370 ]支持failureHandler实现可以从容器中读取
  • [ #2481 ]支持数据库的最大等待配置
  • [ #2379 ]在Nacos注册时支持自定义服务名称
  • [ #2308 ]添加开关以控制是否在Saga交易模式下注册分支
  • [ #2301 ]支持postgresql的默认expr和nextval

错误修正:

  • [ #2575 ]修复executeBatch在声明模式下无法获取targetSql
  • [ #2283 ]修复oracle get tableMeta失败
  • [ #2312 ]修复对配置条件的判断
  • [ #2309 ]修复时间戳反序列化丢失的纳米
  • [ #2292 ]修复了一些未转换为骆驼风格的配置
  • [ #2306 ]修复不建议使用的Maven先决条件
  • [ #2287 ]修复重试全局锁定时无法删除连接上下文
  • [ #2361 ]修复错误配置名称
  • [ #2333 ]修复由于脏数据导致回滚失败时的错误异常信息
  • [ #2390 ]修复包含空格的配置项
  • [ #2408 ]修复undo_log表中丢失的序列
  • [ #2391 ]修复配置异常导致CPU使用率增加
  • [ #2427 ]修复StringUtils.toString(o)StackOverflowError
  • [ #2384 ]修复StateMachineRepository#getStateMachineById将替换缓存中的最后一个版本
  • [ #2323 ]修复了数据源bean的错误代理
  • [ #2466 ]修复了文件模式下活动属性的内存可见性
  • [ #2349 ]修复了插入sql主键值支持检查
  • [ #2479 ]修复不使用lowerCase时的postgresql模式
  • [ #2449 ]修复了启动时无法获取表结构的问题
  • [ #2505 ]修复了会话存储路径值判断的错误
  • [ #2456 ]修复服务器编码请求错误
  • [ #2495 ]修复NPE并在lockkey为null时减少请求
  • [ #2490 ]在资源为空时修复RpcContext.addResource
  • [ #2419 ]修复HTTP测试用例运行失败
  • [ #2535 ]修复config.txt中错误的配置名称
  • [ #2524 ]注册服务配置丢失且不一致
  • [ #2473 ]修复了文件模式下磁盘的刷新条件
  • [ #2455 ]修复子模块无法执行版权和检查样式检查

优化:

  • [ #2409 ]在undoLog或lockKey为空时减少数据库和网络请求
  • [ #2329 ]分离不同的存储模式处理逻辑
  • [ #2354 ]针对Spring Cloud配置优化不受支持的侦听器逻辑
  • [ #2320 ]优化原型和kryo序列化时间戳
  • [ #2307 ]在切换事务模式时优化事务上下文切换逻辑
  • [ #2364 ]优化在加载类时实际未使用的生成实例
  • [ #2368 ]添加zk缺少的配置
  • [ #2351 ]添加获取本地全局状态
  • [ #2529 ]优化德鲁伊参数
  • [ #2288 ] codecov.yml忽略模拟测试
  • [ #2297 ]删除重复的依赖项
  • [ #2336 ]使用组织徽标添加
  • [ #2348 ]删除冗余配置
  • [ #2362 ]优化stackTraceLogger参数
  • [ #2382 ]优化RegistryFactory单例模式和RegistryType判断
  • [ #2400 ]在UUIDGenerator上优化日期的魔数
  • [ #2397 ]解决打字错误
  • [ #2407 ]错误的判断可能会导致NPE
  • [ #2402 ]优化rm和tm寄存器日志
  • [ #2422 ]在文档中添加脚本链接
  • [ #2440 ]优化与我们联系并启动日志
  • [ #2445 ]针对kryo和fst优化类注册方法
  • [ #2372 ]使用SPI重构锁存储SQL
  • [ #2453 ]优化不必要的服务器配置项
  • [ #2369 ]使用SPI重构日志存储SQL
  • [ #2526 ]优化spring-boot启动日志
  • [ #2530 ]删除使用connPool
  • [ #2489 ]优化exceptionHandler的方法签名
  • [ #2494 ]减少冗余代码
  • [ #2523 ]按频率优化异常全局事务的输出日志
  • [ #2549 ]优化ZookeeperConfiguration的异常日志
  • [ #2558 ]优化配置和服务器模块日志
  • [ #2464 ]增强Saga交易编辑器
  • [ #2553 ]添加有关使用脚本的一些注意事项
024ac9f2df40f1a12ce5c890dbe8d4ea.png

Seata能不能上生产

按照官方说法,从0.49版本开始,就可以上生产了,Seata作为SpringCloud Alibaba的核心框架,其更新的频率会非常高,快速的解决使用过程中遇到的问题,是一个不错的选择。

目前用过的分布式事务的解决,小编还是集中在MQ的方式来做,如果有哪位同学用Seata上过生产,可介绍一下感受。

1438eeb37e478c461f2bbc5455ed9550.png

--END--

作者:@溪云阁

如需要源码,转发,关注后私信我。

部分图片或代码来源网络,如侵权请联系删除,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值