K8S常见的微服务中间件部署之Seata

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Seata概述

1.Seata 是什么

145942191-7a2d469f-94c8-4cd2-8c7e-46ad75683636-28d78937882d141d1ec34a6cfc30642f

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

Seata术语
	TC (Transaction Coordinator) - 事务协调者
		维护全局和分支事务的状态,驱动全局事务提交或回滚。

	TM (Transaction Manager) - 事务管理器
		定义全局事务的范围:开始全局事务、提交或回滚全局事务。

	RM (Resource Manager) - 资源管理器
		管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。


参考链接:
	https://seata.apache.org/zh-cn/docs/overview/what-is-seata
	https://seata.apache.org/zh-cn/docs/overview/terminology

2.Seata发展历史

早在 2007 年,阿里巴巴和蚂蚁集团内部开发了分布式事务中间件,用于解决电商、支付、物流等业务场景中应用数据的一致性问题。内部项目分别被称为 TXC (Taobao Transaction Constructor)/XTS(eXtended Transaction Service),该项目几乎在每笔订单的交易支付链路几乎都有使用。

自 2013 年以来,阿里巴巴和蚂蚁集团已在阿里云和金融云上向企业客户分别发布了分布式事务云服务产品 GTS(global transaction service)/DTX(Distributed Transaction-eXtended),在各个行业领域积累了大量用户。

2019 年 1 月,阿里巴巴集团正式开源了该项目,项目命名为 Fescar (Fast & Easy Commit and Rollback))。项目开源以来,它受到了众多开发人员的热烈欢迎和赞扬,开源一周收获了超 3k star,曾一度蝉联 GitHub Trending 排行榜第一。

2019 年 4 月,蚂蚁集团数据中间件团队加入了 Fescar 社区。为了创建一个更加开放和中立的社区,Fescar 改名为 Seata(Simple Extensible Autonomous Transaction Architecture),代码仓库从 Alibaba organization 迁移到其独立的 Seata organization。

2019 年 12 月,Seata 开源项目正式发布 1.0.0 GA 版本,标志着项目已基本可生产使用。

2023 年 10 月,为了更好的通过社区驱动技术的演进,阿里和蚂蚁集团正式将 Seata 捐赠给 Apache 基金会,该提案已通过了 Apache 基金会的投票决议,Seata 正式进入 Apache 孵化器。

二.使用 Kubernetes 部署 Seata Server

1.编写资源清单

[root@master241 10-seata]# cat 01-deploy-seata.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: seata-server
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: seata-server
  template:
    metadata:
      labels:
        k8s-app: seata-server
    spec:
      containers:
        - name: seata-server
          image: docker.io/apache/seata-server:2.5.0.jdk21
          imagePullPolicy: IfNotPresent
          env:
            - name: SEATA_PORT
              value: "8091"
            - name: STORE_MODE
              value: file
          ports:
            - name: http
              containerPort: 8091
              protocol: TCP
[root@master241 10-seata]# 
[root@master241 10-seata]# 
[root@master241 10-seata]# cat 02-svc-seata.yaml 
apiVersion: v1
kind: Service
metadata:
  name: svc-seata-server
spec:
  type: LoadBalancer
  ports:
    - port: 8091
      nodePort: 30091
      protocol: TCP
      name: http
  selector:
    k8s-app: seata-server
[root@master241 10-seata]# 
[root@master241 10-seata]# 

2.创建资源

[root@master241 10-seata]# ll
total 16
drwxr-xr-x  2 root root 4096 Jul 16 15:01 ./
drwxr-xr-x 12 root root 4096 Jul 16 15:00 ../
-rw-r--r--  1 root root  606 Jul 16 15:00 01-deploy-seata.yaml
-rw-r--r--  1 root root  206 Jul 16 15:01 02-svc-seata.yaml
[root@master241 10-seata]# 
[root@master241 10-seata]# kubectl apply -f .
deployment.apps/seata-server created
service/svc-seata-server created
[root@master241 10-seata]# 
[root@master241 10-seata]# kubectl get svc svc-seata-server 
NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
svc-seata-server   LoadBalancer   10.205.140.131   10.0.0.155    8091:30091/TCP   8s
[root@master241 10-seata]# 
[root@master241 10-seata]# kubectl get pods -o wide -l k8s-app=seata-server
NAME                            READY   STATUS    RESTARTS   AGE   IP              NODE        NOMINATED NODE   READINESS GATES
seata-server-7d6b9db5b4-k8m2v   1/1     Running   0          19s   10.100.207.49   worker243   <none>           <none>
[root@master241 10-seata]# 

3.参考链接

推荐阅读:
	https://seata.apache.org/zh-cn/docs/ops/deploy-by-kubernetes
posted @ 2025-07-19 22:11  尹正杰  阅读(88)  评论(0)    收藏  举报