K8S常见的微服务中间件部署之Seata
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Seata概述
1.Seata 是什么
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
本文来自博客园,作者:尹正杰,转载请注明原文链接:https://www.cnblogs.com/yinzhengjie/p/18993401,个人微信: "JasonYin2020"(添加时请备注来源及意图备注,有偿付费)
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。