开发者社区 > 云原生 > 中间件 > 正文

Seata使用 AT 模式需要的注意事项有哪些 ?

Seata使用 AT 模式需要的注意事项有哪些 ?

展开
收起
真的很搞笑 2023-04-10 22:41:09 218 0
2 条回答
写回答
取消 提交回答
  • 必须使用代理数据源,有 3 种形式可以代理数据源:

    依赖 seata-spring-boot-starter 时,自动代理数据源,无需额外处理。 依赖 seata-all 时,使用 @EnableAutoDataSourceProxy (since 1.1.0) 注解,注解参数可选择 jdk 代理或者 cglib 代理。 依赖 seata-all 时,也可以手动使用 DatasourceProxy 来包装 DataSource。

    配置 GlobalTransactionScanner,使用 seata-all 时需要手动配置,使用 seata-spring-boot-starter 时无需额外处理。 业务表中必须包含单列主键,若存在复合主键,请参考问题 13 。 每个业务库中必须包含 undo_log 表,若与分库分表组件联用,分库不分表。 跨微服务链路的事务需要对相应 RPC 框架支持,目前 seata-all 中已经支持:Apache Dubbo、Alibaba Dubbo、sofa-RPC、Motan、gRpc、httpClient,对于 Spring Cloud 的支持,请大家引用 spring-cloud-alibaba-seata。其他自研框架、异步模型、消息消费事务模型请结合 API 自行支持。 目前AT模式支持的数据库有:MySQL、Oracle、PostgreSQL和 TiDB。 使用注解开启分布式事务时,若默认服务 provider 端加入 consumer 端的事务,provider 可不标注注解。但是,provider 同样需要相应的依赖和配置,仅可省略注解。 使用注解开启分布式事务时,若要求事务回滚,必须将异常抛出到事务的发起方,被事务发起方的 @GlobalTransactional 注解感知到。provide 直接抛出异常 或 定义错误码由 consumer 判断再抛出异常。,此回答整理自钉群“3群-Seata 开源讨论群”

    2023-04-11 18:44:08
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    需要注意以下几点:

    1. 事务分组:AT 模式下需要对分布式事务进行分组,同一组内的分布式事务使用相同的 XID。

    2. 分布式事务的开关:需要在配置文件中将分布式事务的开关打开。

    3. 数据库连接:需要将数据库连接池的最大连接数调整为 Seata 中的 AT 模式支持的最大连接数。

    4. 分布式事务超时:需要根据业务的需求来设置分布式事务的超时时间,以确保在一定时间内完成所有的操作。

    5. 分布式事务日志存储:配置 Seata 的事务日志存储的方式,以确保在事务提交时,日志正确存储。

    6. 分布式锁的使用:在 AT 模式下,需要使用 Seata 提供的分布式锁来实现事务的并发控制,以避免出现数据并发问题。

    需要注意的是,在使用 Seata 的 AT 模式时,由于锁和日志的存储会对性能产生一定的影响,因此需要对业务进行一定的调整和优化,以确保 Seata 的使用不会对业务产生过多的性能开销。

    2023-04-11 08:54:32
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载