前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >seata + zookeeper解决分布式事务问题

seata + zookeeper解决分布式事务问题

作者头像
用户9131103
发布于 2023-07-17 11:51:40
发布于 2023-07-17 11:51:40
47300
代码可运行
举报
文章被收录于专栏:工作经验工作经验
运行总次数:0
代码可运行

公司业务需要用到 springboot+dubbo+zookeeper 做分布式服务 但是遇到一个两个系统直接项目调用操成数据不同步问题

所以就开始百度找啊找

最终选用 seata做分布式事务

网上大部分都是nanos+seata 但是我们公司是zookeeper

所以。。。 首先在pom引入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
                <groupId>io.seata</groupId>
                <artifactId>seata-spring-boot-starter</artifactId>
                <version>1.5.2</version>
</dependency>

然后下载seata1.5.2的程序

在seata\conf 修改application.yml 这个文件可以仿照 application.example.yml 文件进行修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/logs/seata
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: zk
    zk:
      server-addr: 127.0.0.1:2181
      session-timeout: 6000
      connect-timeout: 2000
      username:
      password:
      node-path: /seata/seata.properties
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: zk
    zk:
      cluster: default
      server-addr: 127.0.0.1:2181
      session-timeout: 6000
      connect-timeout: 2000
      username: ""
      password: ""
  store:
    # support: file 、 db 、 redis
    mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true
      user: user
      password: password
      min-conn: 5
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 100
      max-wait: 5000
#  server:
#    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

然后再项目里面的application.yml 添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#AT 模式
seata:
  enabled: true
  application-id: kingow-oa-server  ---自己写
  tx-service-group: kingow-oa-server-group ---自己写,这个和下面的service.vgroup-mapping的key要保持一致
  enable-auto-data-source-proxy: true
  client:
    support:
      spring:
        datasource-autoproxy: true
  registry:
    type: zk
    zk:
      server-addr: 127.0.0.1:2181
      connect-timeout: 2000
      session-timeout: 6000
      username: ""
      password: ""
  service:
    grouplist:
      default: 127.0.0.1:8091
    vgroup-mapping:
      kingow-oa-server-group: default  

seata 要导入它自身的数据库 创建一个数据库导入,然后修改seata的yml文件里面的db链接 seata\script\server\db ,然后再业务数据库 自行添加一个表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `undo_log` (
  `branch_id` bigint NOT NULL COMMENT 'branch transaction id',
  `xid` varchar(100) NOT NULL COMMENT 'global transaction id',
  `context` varchar(128) NOT NULL COMMENT 'undo_log context,such as serialization',
  `rollback_info` longblob NOT NULL COMMENT 'rollback info',
  `log_status` int NOT NULL COMMENT '0:normal status,1:defense status',
  `log_created` datetime(6) NOT NULL COMMENT 'create datetime',
  `log_modified` datetime(6) NOT NULL COMMENT 'modify datetime',
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='AT transaction mode undo table';

然后如果要使用 就在service层添加注解

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@GlobalTransactional

目录:seata\bin linux启动方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./seata-server.sh -h 127.0.0.1 -p 8091 &

window直接双击

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
seata-server.bat

如果一闪而过可以在bat文件最后里面添加一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pause

seata启动后有个前端页面: http://127.0.0.1:7091/#/ 可以查看全局事务情况 ,debug模块打断点可以表undo_log里面的数据,回滚成功后就会删除记录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年04月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SEATA 分布式事务入门DEMO
在eureka中看到如下8091端口的服务之后,即启动seata-server正常!
Isaac Zhang
2020/02/13
1.4K0
SEATA 分布式事务入门DEMO
解决分布式事务,Seata真香!
年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验等,帮助大家提升技能,安稳度过这个寒冬,快加入我们吧!
林老师带你学编程
2024/05/25
3900
解决分布式事务,Seata真香!
Docker部署Seata服务器
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/10/31
9940
Docker部署Seata服务器
Seata 分布式事务
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三三 个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
用户9615083
2022/12/25
8450
Seata 分布式事务
分布式事务解决方案:Spring Cloud + Nacos + Seata整合
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
程序员云帆哥
2022/05/10
1.6K1
分布式事务解决方案:Spring Cloud + Nacos + Seata整合
SpringCloud➕Mybatis➕Eureka➕Feign➕Seata分布式事务???
Seata(Simple Extensible Autonomous Transaction Architecture) 是 阿里开源的分布式事务中间件,以高效并且对业务 0 侵入的方式,解决微服务场景下面临的分布式事务问题。
Cheng_Blog
2022/02/25
7100
SpringCloud➕Mybatis➕Eureka➕Feign➕Seata分布式事务???
seata---分布式事务处理
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
大忽悠爱学习
2021/12/07
8580
seata---分布式事务处理
mac 上学习k8s系列(53)seata-go
https://github.com/seata/seata-go是https://github.com/seata/seata的golang客户端,目前支持at和tcc两种分布式事务的实现。虽然官方的文档给的例子描述了如何处理分布式事务,但是如何部署和使用语焉不详。下面介绍下两种部署方式file、db
golangLeetcode
2022/12/17
6900
Java学习笔记-微服务(9)-终-分布式事务Seata
在微服务中,一定存在多个数据库,那么多个数据库间如何处理分布式事务?对于分布式事务问题,有哪些解决方案?
咸鱼程序员
2025/03/09
1940
Java学习笔记-微服务(9)-终-分布式事务Seata
springcloud seata_seata github
linux后台启动方式 :nohup ./seata-server.sh > /dev/seata-service.log 2>&1 &
全栈程序员站长
2022/09/24
3040
springcloud seata_seata github
微服务(十六)——Seata 分布式事务框架
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三三 个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
不愿意做鱼的小鲸鱼
2022/10/05
2K0
微服务(十六)——Seata 分布式事务框架
Spring Cloud Alibaba 系列之 Seata 分布式事务 demo
  在上一篇博客 《Spring Cloud Alibaba 系列之 Seata 介绍》 介绍了 Seata,在这一篇中我们来看看怎么使用。以一个用户购买商品的微服务示例开始,整个业务逻辑由3个微服务提供支持:仓储服务:对给定的商品扣除仓储数量。订单服务:根据采购需求创建订单。帐户服务:从用户帐户中扣除余额。
Demo_Null
2020/12/07
1.3K0
Spring Cloud Alibaba 系列之 Seata 分布式事务 demo
Seata分布式事务落地解决方案
上一篇文章介绍了分布式事务理论和相关解决方案的具体思路,我们下面快速复习一下相关知识点:
大忽悠爱学习
2023/02/13
1.1K0
Seata分布式事务落地解决方案
Seata 环境搭建
Seata是一个分布式事务,seata服务端也是一个微服务,需要和其他微服务一样需要注册中心和配置中心。同时事务回滚,需要数据库日志记录。
用户10384376
2023/02/26
6310
Seata 环境搭建
分布式事务解决方案之Seata管理
前面两篇文章,已经讲解什么是分布式事务,并且讲解了XA协议和TCC三段提交来解决分布式服务,其实这两种方式都是有缺点,要么比较古老,要么实现起来复杂度搞。那么有没有一个第三方框架,能够直接整合到现有项目,直接把本地事务改成全局分布式事务,类似我们使用Transation注解一样。本文就是讲解新的一种解决方案,也就是阿里提出的Seata。
小明爱吃火锅
2023/12/10
5792
五大分布式事务,你了解多少?
事务(Transaction):一般是指要做的或所做的事情,由 事务开始(begin transaction) 和 事务结束(end transaction) 之间执行的全体操作组成。
全栈程序员站长
2021/04/07
5540
Spring Cloud 中的分布式事务,附源码《一》
在开发我的开源项目 prex 时,加入工作流,解决工作流用户与当前系统用户同步问题时,涉及到远程调用操作两个数据库所产生的事务问题,比如系统用户在增加用户同步工作流用户时,系统用户添加成功,工作流用户没有添加成功,则造成数据不一致问题,本地事务无法回滚,那么则使用分布式事务解决方案。
搜云库技术团队
2019/12/02
1.1K0
分布式事务
两阶段提交协议 Two Phase Commitment Protocol 涉及到两种角色
Java_慈祥
2024/08/06
2430
分布式事务
处理分布式事务(SpringCloud Alibaba Seata)
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
鱼找水需要时间
2023/02/16
2760
处理分布式事务(SpringCloud Alibaba Seata)
SpringCloud Alibaba Seata处理分布式事务
分布式之后:   单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。
别团等shy哥发育
2023/02/25
3130
SpringCloud Alibaba Seata处理分布式事务
相关推荐
SEATA 分布式事务入门DEMO
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验