本文主要介绍分布式事务从内部到商业化和开源的演进历程,Seata 社区当前进展和未来规划。
Seata 是一款开源的分布式事务解决方案,旨在为现代化微服务架构下的分布式事务提供解决方案。Seata 提供了完整的分布式事务解决方案,包括 AT、TCC、Saga 和 XA 事务模式,可支持多种编程语言和数据存储方案。Seata 还提供了简便易用的 API,以及丰富的文档和示例,方便企业在应用 Seata 时进行快速开发和部署。
Seata 的优势在于具有高可用性、高性能、高扩展性等特点,同时在进行横向扩展时也无需做额外的复杂操作。目前 Seata 已在阿里云上几千家客户业务系统中使用,其可靠性得到了业内各大厂商的认可和应用。
作为一个开源项目,Seata 的社区也在不断扩大,现已成为开发者交流、分享和学习的重要平台,也得到了越来越多企业的支持和关注。
今天我主要针对以下三个小议题对 Seata 进行分享:
- 从 TXC/GTS 到 Seata
- Seata 社区最新进展
- Seata 社区未来规划
从 TXC/GTS 到 Seata
分布式事务的缘起
Seata 在阿里内部的产品代号叫 TXC(taobao transaction constructor),这个名字有非常浓厚的组织架构色彩。TXC 起源于阿里五彩石项目,五彩石是上古神话中女娲补天所用的石子,项目名喻意为打破关键技术壁垒,象征着阿里在从单体架构向分布式架构的演进过程中的重要里程碑。在这个项目的过程中演进出一批划时代的互联网中间件,包括我们常说的三大件:
- HSF 服务调用框架,解决单体应用到服务化后的服务通信调用问题。
- TDDL 分库分表框架,解决规模化后单库存储容量和连接数问题。
- MetaQ 消息框架,解决异步调用问题。
三大件的诞生满足了微服务化业务开发的基本需求,但是微服务化后的数据一致性问题并未得到妥善解决,缺少统一的解决方案。应用微服务化后出现数据一致性问题概率远大于单体应用,从进程内调用到网络调用这种复杂的环境加剧了异常场景的产生,服务跳数的增多使得在出现业务处理异常时无法协同上下游服务同时进行数据回滚。TXC 的诞生正是为了解决应用架构层数据一致性的痛点问题,TXC 核心要解决的数据一致性场景包括:
- 跨服务的一致性。应对系统异常如调用超时和业务异常时协调上下游服务节点回滚。
- 分库分表的数据一致性。应对业务层逻辑 SQL 操作的数据在不同数据分片上,保证其分库分表操作的内部事务。
- 消息发送的数据一致性。应对数据操作和消息发送成功的不一致性问题。
为了克服以上通用场景遇到的问题,TXC 与三大件做了无缝集成。业务使用三大件开发时,完全感知不到背后 TXC 的存在,业务不需要考虑数据一致性的设计问题,数据一致