前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务开发的最大痛点-分布式事务SEATA入门简介

微服务开发的最大痛点-分布式事务SEATA入门简介

作者头像
sanshengshui
发布2020-12-21 11:27:29
9170
发布2020-12-21 11:27:29
举报
文章被收录于专栏:穆书伟穆书伟

前言

在微服务开发中,存在诸多的开发痛点,例如分布式事务、全链路跟踪、限流降级和服务平滑上下线等。而在这其中,分布式事务是最让开发者头痛的。那分布式事务是什么呢?

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。或者,在换一句话说,分布式事务 = n 个本地事务。通过事务管理器,达到 n 个本地事务要么全部成功,要么全部失败。

SEATA应运而生

那有什么方案解决上述的这些难点和痛点呢?

SEATA作为一款开源的分布式事务解决方案应运而生,其致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

官方网址:https://seata.io/zh-cn/index.html

GitHub: https://github.com/seata/seata

愿景和诞生的鸟巢

  • 微服务架构下,易用、高效的分布式事务解决方案。
  • 技术积累
    • 内部产品:TXC、XTS
    • 商业化产品:GTS、DTS
  • 愿景:像使用本地事务一样使用分布式事务,提供一站式的分布式事务解决方案

特性

  1. 微服务框架支持:目前已支持 Dubbo、Spring Cloud、Sofa-RPC、Motan 和 grpc 等RPC框架,其他框架持续集成中。
  2. 高可用: 支持基于数据库存储的集群模式,水平扩展能力强。
  3. 高可扩展性: 支持各类配置中心、注册中心、序列化、存储、协议序列化、负载均衡等SPI扩展。
  4. AT自动补偿模式: 提供无侵入自动补偿的事务模式,目前已支持MySQL、Oracle的自动补偿模式、PostgreSQL、H2开发中。
  5. TCC模式: 支持用户使用TCC灵活扩展事务。
  6. Saga模式:提供长事务河服务编排解决方案。

框架角色

  • TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。
  • TM (Transaction Manager) - 事务管理器:定义全局事务的范围,开始全局事务、提交或回滚全局事务。
  • RM ( Resource Manager ) - 资源管理器:管理分支事务处理的资源( Resource ),与 TC 交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。

生命周期

  • TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。 XID,会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。
  • RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
  • TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
  • TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。

安装部署

docker-compose(推荐)

官方文档地址:https://seata.io/zh-cn/docs/ops/deploy-by-docker.html

直接部署

官方文档地址: https://seata.io/zh-cn/docs/ops/deploy-server.html

  1. RELEASE页面下载相应版本并解压
  2. 直接启动

在 Linux/Mac 下

代码语言:javascript
复制
$ sh ./bin/seata-server.sh

在 Windows 下

代码语言:javascript
复制
bin\seata-server.bat

支持的启动参数

参数

全写

作用

备注

-h

--host

指定在注册中心注册的 IP

不指定时获取当前的 IP,外部访问部署在云环境和容器中的 server 建议指定

-p

--port

指定 server 启动的端口

默认为 8091

-m

--storeMode

事务日志存储方式

支持file,db,redis,默认为 file 注:redis需seata-server 1.3版本及以上

-n

--serverNode

用于指定seata-server节点ID

如 1,2,3..., 默认为 1

-e

--seataEnv

指定 seata-server 运行环境

如 dev, test 等, 服务启动时会使用 registry-dev.conf 这样的配置

如:

代码语言:javascript
复制
$ sh ./bin/seata-server.sh -p 8091 -h 127.0.0.1 -m file
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • SEATA应运而生
    • 愿景和诞生的鸟巢
      • 特性
        • 框架角色
          • 生命周期
          • 安装部署
            • docker-compose(推荐)
              • 直接部署
                • 支持的启动参数
                相关产品与服务
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档