33 | 分布式事务:搭建 Seata 服务器
姚秋辰
你好,我是姚秋辰。
在上节课中,我提到过一个叫 Transaction Coordinator 的组件,它在分布式事务中扮演了一个协调者的角色,用来保证事务的最终一致性。这个昨日配角摇身一变就成了今天的主角,还有了一个新的名字:Seata Server。这节课我就带你了解 Seata Server 的交互模型,再手把手带你搭建一个 Seata Server。
但凡名字里带个 Server 的组件,不用想就知道这一定又是一个“中间件”,Seata Server 就是这么一个中心化的、单独部署的事务管理中间件。在开始搭建 Seata Server 之前,我们先来了解一下 Seata Server 在整个分布式事务方案中是如何跟各个应用交互的吧。
在上面的图里,除了微服务和 Seata 以外,还多了 Nacos 和 MySQL 的影子,它俩来凑什么数呢?
在分布式事务的执行过程中,各个微服务都要向 Seata 汇报自己的分支事务状态,亦或是接收来自 Seata 的 Commit/Rollback 决议,这些微服务是如何勾搭上 Seata Server 的呢?答案就是服务发现。Seata Server 把自己作为了一个微服务注册到了 Nacos,各个微服务利用 Nacos 的服务发现能力获取到 Seata Server 的地址。如此一来,微服务到 Seata Server 的通信链路就构建起来了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何搭建Seata服务器,从交互模型到具体搭建步骤进行了全面讲解。首先,文章介绍了Seata服务器在分布式事务方案中的交互方式和数据持久化工作。随后,详细描述了搭建Seata服务器的步骤,包括配置文件和数据库表的修改,以及将Seata服务器注册到Nacos中。作者强调了配置DB连接串、创建数据库表和开启服务发现功能的重要性,并提醒读者特别留意JDBC版本、undo_log表的位置以及服务注册的一致性。此外,文章还提到了Seata支持的多种分布式方案,包括XA协议、AT、TCC和Saga,并鼓励读者深入了解这些方案的基本概念和适用场景。最后,作者提出了思考题,邀请读者分享在自己项目中解决数据一致性问题的经验。整体而言,本文以清晰的步骤指导读者搭建Seata服务器,为理解Seata服务器的交互模型和搭建过程提供了有益的指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
《Spring Cloud 微服务项目实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- peter请教老师几个问题: Q1:微服务端的undo_log表,其字段是固定的还是任意的? Q2:微服务端的undo_log表,业务代码需要对其操作吗?或者是seat在微服务端有一个客户端,由此客户端代码对其进行操作? Q3:能否加餐讲一下持续集成? Q4:微服务部署问题 一个网站,微服务会有很多,比如二十个,SpringCloud的组件也很多,需要用到的也差不多有十个左右。这样就有三十个实体,每一个都要有备份的话,就需要30*2=60台机器。六十台机器,对于大公司不算什么,对于创业公司,成本会很高啊。这个问题有什么解决办法吗?一个微服务实例要占用一台物理机吗?
作者回复: Q1: undo_log字段是固定的,但是字段存的内容是自动生成 Q2: 业务代码不用操作,seata框架会来自动操作 Q3: 妈呀CICD太宏大了,能整一门新课了 Q4:现在大公司也不会使用物理机,都是docker丢在vm里,就像你组了一个阿里云主机,这台主机的cup内存硬盘其实都是“虚化出来”的算力和资源
2022-02-282 - Lee对于互联网来说,高并发情况下,更多是AP吧;金融或者互联网部分场景会用分布式事务、事务消息或者补偿等,但是也会给性能带来一定的问题
作者回复: 是的,互联网偏AP侧
2022-05-16 - 文艺码农老师好.我碰到了一个问题,file文件里面配置 url = "jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true" 会报错说serverTimezone啥啥啥的.然后我配置成这样就ok了: url = "jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true&serverTimezone=Hongkong"
作者回复: 对滴,这是因为不同版本mysql对连接串中的字段要求是不一样的,如果同学本地安装的版本和开篇中我贴出的版本不一样,那么就需要额外注意下url参数
2022-04-18 - Geek_f76b23夺命连环催,大仙速更
作者回复: 男人可不能太快啊,慢着点来
2022-03-01
收起评论