docs: eEnrich the project ReadMe (#844)
docs: eEnrich the project ReadMe
docs: eEnrich the project ReadMe
docs: eEnrich the project ReadMe
docs: Increase the version number so that users can find the latest version.
Update README_ZH.md
Co-authored-by: FengZhang zfcode@qq.com Co-authored-by: FinnTew finntew@foxmail.com
[
简体中文 ZH
什么是 Seata-go?
Apache Seata(incubating)是一个非常成熟的分布式事务框架,是 Java 领域事实上的标准分布式事务平台。Seata-go 是其在多语言生态中 Go 语言的实现版本,实现了 Java 与 Go 之间的互操作,使得 Go 开发者也可以使用 seata-go 实现分布式事务。请访问 Seata 官网 获取快速入门和文档。
Seata-go 的原理与 Seata-java 一致,由 TM、RM 和 TC 三部分组成。其中 TC 功能复用 Java 的实现,而 TM 和 RM 则已与 Seata-java 对接。
微服务中的分布式事务问题
假设我们有一个传统的单体应用,其业务由三个模块组成,使用一个本地数据源,自然由本地事务保障数据一致性。
但在微服务架构中,这三个模块被设计成了三个不同的服务,分别使用不同的数据源(数据库每服务模式)。单个服务内的数据一致性可以通过本地事务保障。
但整个业务范围的一致性如何保障?
Seata-go 如何做?
Seata-go 就是为了解决上述问题而生。
首先,如何定义一个分布式事务?
我们认为,分布式事务是一个全局事务,由一组分支事务组成,而分支事务通常就是本地事务。

Seata-go 中有三个角色:
事务协调器(TC):维护全局和分支事务的状态,驱动全局提交或回滚。
事务管理器(TM):定义全局事务的范围,开始、提交或回滚全局事务。
资源管理器(RM):管理分支事务所处理的资源,与 TC 通信注册分支事务并报告状态,驱动分支事务提交或回滚。
Seata-go 分布式事务的典型生命周期如下:
TM 请求 TC 开启一个新的全局事务,TC 生成表示全局事务的 XID。
XID 在微服务调用链中传播。
RM 将本地事务注册为该 XID 对应的全局事务的分支事务。
TM 请求 TC 提交或回滚该 XID 对应的全局事务。
TC 驱动该 XID 对应的所有分支事务进行提交或回滚。
更多原理和设计细节,请参阅 Seata Wiki 页面。
历史背景
阿里巴巴
TXC:淘宝事务构建器。2014 年阿里中间件团队启动,用于应对从单体架构转向微服务带来的分布式事务问题。
GTS:全局事务服务。2016 年 TXC 在阿里云上线,更名为 GTS。
Fescar:2019 年开始基于 TXC/GTS 启动开源项目 Fescar,与社区合作。
蚂蚁金服
XTS:扩展事务服务。自 2007 年开始开发的分布式事务中间件,被广泛应用于蚂蚁金服,解决跨库跨服务数据一致性问题。
DTX:分布式事务扩展。2013 年起在蚂蚁金服云发布,命名为 DTX。
Seata 社区
Seata:简单可扩展的自主事务架构。蚂蚁金服加入 Fescar,使其成为一个更加中立开放的社区,Fescar 更名为 Seata。
如何运行?
如果你想了解如何使用和集成 seata-go,请参考 apache/seata-go-samples
如何查找最新版本
访问 Seata-Go 的 GitHub Releases 页面
打开:https://github.com/seata/seata-go/releases
最新的 tag / release 就是目前的最新稳定版本。
文档
你可以访问 Seata 官方网站获取完整文档:Seata 官网
问题报告
若有问题,请遵循 模板 报告问题。
安全
请勿使用公开的问题跟踪器,详情请参阅我们的 安全政策
参与贡献
Seata-go 当前处于建设阶段,欢迎业界同仁加入我们,共同推进 Seata-go 建设!如果你想为 Seata-go 贡献代码,请参考 代码贡献规范,也可以加入我们的社区钉钉群:33069364 一起交流!
联系方式
* dev@seata.apache.org - 用于开发/用户讨论 订阅、取消订阅、归档
Seata 生态系统
Seata 官网- Seata官方网站
Seata - Seata 客户端和服务端
Seata GoLang - Seata Go 客户端和服务端
Seata 示例- Seata 示例
Seata Go 示例- Seata GoLang 示例
Seata K8s 集成- Seata 与 K8S 集成
Seata 命令行工具- Seata CLI 工具
贡献者
Seata-go感谢所有贡献者的付出。[贡献者列表]
许可证
Seata-go 使用 Apache 2.0 协议,详情请查看 LICENSE 文件