Seata-微服务架构开发的必备利器

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式务服务,于 2019 年 1 月正式开源。 目前有四种事务模式,分别是 AT 事务模式(阿里独创)、 TCC事务模式、XA 事务模式以及 Saga 事务模式,基本囊括了市面上大部分事务模式,可以成为是一个一站式的分布式事务解决方案。

Seata-微服务架构开发的必备利器

——季敏

Seata开源社区负责人

01 What is New in Seata 1.5.0?

image.png

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式务服务 2019 1 月正式开源。目前有四种事务模式,分别是AT 事务模式(阿里独创)、 TCC事务模式、XA 事务模式以及 Saga事务模式,基本囊括了市面上大部分事务模式,可以成为是一个一站式的分布式事务解决方案。


Seata 对市面上主流的 RPC 框架和数据库都做了广泛的集成和支持,也被很多第三方社区做了主动和被动集成。目前它支持 JavaGoPHPPython 多语言,已经被上千家企业在业务系统中应用。金融领域也在积极试点,用 Seata处理核心账务问题


 截至目前,Seata 社区收获接近 22k star 300 contributor 参与了 Seata 社区的代码提交,与 SkywalkingShardingsphere 等众多 RPC 框架和数据库框架做了集成

image.png

微服务架构是今年业内绕不开的词。那么,微服务架构下,会受到哪些数据一致性的困扰?


场景1:将单体应用拆分成若干个微服务,比如有ABC 三个微服务,由各自不同的团队维护。假设 C 团队的微服务正在发布部署 A 业务入口可能有业务流量的调用,此时无法调用 C,一旦调用不通,会出现数据一致性问题。


场景2C 节点宕机。


场景3C 节点负载较高或出现网络抖动,B 调用 C 时出现 timeout,无法判断 C 的业务逻辑有没有真正被执行,最终也会导致 AB 节点业务数据的一致性问题。


场景4:服务链路里有各自的技术栈,不同的技术栈有不同的技术组件依赖,因而也无法保证ABC 整个服务链路业务逻辑数据的一致性。


场景5 C 节点遇到业务异常,导致认为 AB 节点的业务逻辑是非法的,因此 AB节点需要做数据回滚才能保证一致性。但是没有分布式事务框架则难以保证链路微服务节点之间的数据一致性。


总结而言,常见的数据一致性场景可以分为两种情况:


系统异常:①服务不可达:网络、宕机、服务上下线或者熔断限流等。②服务超时。


业务异常:①业务校验非法。②运行时异常


Seata 的出发点就是解决微服务架构数据一致性带来的困扰。

image.png

分布式事务产生的原因可以总结为以下四类:


第一类:跨数据库的操作。随着业务规模的增长,单库容量和连接数都难以满足业务需求,会出现分库。而一旦出现分库,就会出现分布式事务的业务场景。


第二类:跨系统的分布式事务。与第三方系统交互(不同的系统之间)会产生分布式事务问题;另外,企业内部系统之间的交互也会产生分布式事务的问题。


第三类:跨服务的分布式事务。业务服务化之后,资源与客户端的调用解耦,同时要保证多个微服务间的变化强一致,否则会造成业务数据不完整。


第四类:跨数据库与消息的分布式事务。在某些业务中,需要进行多个DB 操作,同时还会调用消息系统,需要保证整个链路的一致性。

image.png

Seata 1.5.0 版本共计有 60+ contributor 参与了代码提交,累计贡献了 6 + 行代码,删减约 1 万行代码,累计修改文件 872,合并 pr 230,其中新特性 pr 30+,修复问题 pr 60+,优化类 pr 100+


新增特性主要有如下几类:

  • 支持用户控制台(如图右)。
  • 支持Skywalking tracing 的集成。Seata定位是一款数据中间件,而数据中间件的 APM 监控至关重要。
  • 支持 bPRCEDAS hsf RPC 框架。
  • 支持 kotlin
  • 支持 TCC 幂等、空回滚、防悬挂。此前,以上问题需要由业务自己保证,而 1.5.0 版本能够通过框架层面自动保证此类问题,大大降低了开发者使用 TCC 模式的入门难度。
  • 支持分布式任务调度,减轻性能开销。
  • 支持 Redis 存储的 Lua 模式。
  • 支持 ON DUPLICATE KEY UPDATE 等语法解析。

image.png

上图左上为 Seata1.5.0 应用控制台页面Seata server后端存储连接的 global session 信息、分支事务信息以及对应的全局锁信息等,都可以通过控制台按照条件筛选进行展示。


上图左下为 Seata Skywalking 进行生态集成后的应用拓扑图。


上图右侧为整个服务链路的 tracing 过程。比如服务如何校验、Seata RPC 如何交互、Seata server JDBC 如何交互等。Tracing的交互会一直传递到 Seata server,每一个过程的耗时等都能通过 tracing 链路进行直观展示。


02 使用Seata企业版平滑迁移上云


Seata 企业版于 2022 5 月中下旬正式宣布公测。它提供了一种免运维、高性能的企业级分布式解决方案,能够 100%兼容开源。入口在微服务引擎MSE 控制台-分布式事务菜单,可以通过此入口免费开通。

image.png

Seata 企业版的整体架构与开源版完全一致。与开源版的区别在于,除了左侧的 Userl App Seata 相关联的角色,其余 Seata 依赖的注册、配置中心、Seata 本身的节点以及后端的存储等可实现全托管。用户只需在 MSE 控制台-分布式事务菜单下创建 Seata 实例,系统即可自动一键拉起后端所有依赖的注册配置中心、Seata 节点以及后端传输,用户无须手动进行原本繁琐的流程。


Seata 企业版相较于自建版本,具有以下几优势:


效率与性价比 Seata 企业版的资源全托管、免运维,同时内置依赖了注册中心、配置中心支持故障节点自动上下线;而自建版本则需要自己购买各种资源以搭建系统。此外,Seata 企业版提供了白屏化、可视化的运维操作,而自建 Seata 系统运维升级需要投入精力,人工成本较高不支持可视化操作,需要黑屏化的命令行操作以及上传配置脚本等还需要根据不同的配置注册中心类型手动添加事务规则、事务路由等配置,涉及很多元数据的修改,极易出错。


性能企业版在性能上做了深度调优,整体比Seata 1.5.X 的内核性能提升了30%而自建版本需要用户自行进行参数调优。


可观测性:企业版基于Prometheus Grafana 大盘为用户提供了多维度的监控,比如事务量、事务处理RT正常/异常事务的 TPS;而自建 Seata 版本需要用户自己搭建监控告警体系。


高可用和安全:Seata 企业版支持多可用区的部署,提供了故障自动检测和恢复机制;而自建版本需要人工处理,自行设计高可用策略。与此同时,Seata 企业版支持了 RAM 鉴权,可以通过 RAM 用户管理实例的访问权限;而自建Seata 版本需要用户自己对鉴权或安全方面做二次开发。

image.png

通过简单的压测对 Seata 企业版与开源版内核性能进行对比可得:


TPS :自建版本抖动非常明显,企业版进行了深度去毛刺处理,相对较平滑TPS 提升 30% 以上。


RT针对单链路的事务 RT 开销,自建版平均值为 44 毫秒,企业版为 34 毫秒,降低 20% 以上。

image.png

客户开通 Seata 企业版只需简单的三步:


第一步:进入 MSE 控台-分布式事务,在实例列表里点击创建 Seata 实例(公测阶段完全免费),填写VPC 、交换机等信息,输入参数,点击创建。


第二步:创建 Seata 事务分组。填入 Seata 事务分组名称,系统会自动与上一步创建的实例做关联映射。


第三步:点击上图中“显示配置”,复制相应的配置到应用里,即可在本地运行。

 

相关文章
|
2月前
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
|
2月前
|
NoSQL 数据可视化 安全
如何开发一套车辆管理系统?(附架构图+流程图+代码参考)
本文介绍了如何通过搭建车辆管理系统(VMS)帮助企业摆脱传统管理方式,实现流程化、可视化、合规化和自动化。内容涵盖系统架构、关键功能模块、数据模型、API设计、前后端实现及实施建议,提供可落地的技术方案,助力企业降低隐形成本、提升管理效率与透明度,实现数据驱动决策。
|
2月前
|
JSON 文字识别 BI
如何开发车辆管理系统中的加油管理板块(附架构图+流程图+代码参考)
本文针对中小企业在车辆加油管理中常见的单据混乱、油卡管理困难、对账困难等问题,提出了一套完整的系统化解决方案。内容涵盖车辆管理系统(VMS)的核心功能、加油管理模块的设计要点、数据库模型、系统架构、关键业务流程、API设计与实现示例、前端展示参考(React + Antd)、开发技巧与工程化建议等。通过构建加油管理系统,企业可实现燃油费用的透明化、自动化对账、异常检测与数据分析,从而降低运营成本、提升管理效率。适合希望通过技术手段优化车辆管理的企业技术人员与管理者参考。
|
2月前
|
消息中间件 缓存 JavaScript
如何开发ERP(离散制造-MTO)系统中的生产管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO模式下的ERP生产管理模块,涵盖核心问题、系统架构、关键流程、开发技巧及数据库设计,助力企业打通计划与执行“最后一公里”,提升交付率、降低库存与浪费。
|
1月前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
2月前
|
消息中间件 JavaScript 前端开发
如何开发ERP(离散制造-MTO)系统中的技术管理板块(附架构图+流程图+代码参考)
本文详解ERP(离散制造-MTO)系统中的技术管理板块,涵盖产品定义、BOM、工序、工艺文件及变更控制的结构化与系统化管理。内容包括技术管理的核心目标、总体架构、关键组件、业务流程、开发技巧与最佳实践,并提供完整的参考代码,助力企业将技术数据转化为可执行的生产指令,提升制造效率与质量。
|
2月前
|
消息中间件 JavaScript 关系型数据库
如何开发一套ERP(离散制造-MTO)系统(附架构图+流程图+代码参考)
本文介绍了面向离散制造-MTO(按订单生产)模式的ERP系统设计与实现方法。内容涵盖ERP系统定义、总体架构设计、主要功能模块解析、关键业务流程(订单到交付、BOM展开、MRP逻辑、排产等)、开发技巧(DDD、微服务、事件驱动)、参考代码示例、部署上线注意事项及实施效果评估。旨在帮助企业与开发团队构建高效、灵活、可扩展的ERP系统,提升订单交付能力与客户满意度。
|
2月前
|
NoSQL 关系型数据库 BI
如何开发一套固定资产管理系统?(附架构图+流程图+代码参考)
固定资产管理涉及采购、入库、维修、盘点、报废等多个环节,是企业资产保值增值的关键。本文详解固定资产管理系统(FAMS)的核心功能、系统架构、资产全生命周期流程,并提供功能设计、开发实操技巧与关键代码示例,涵盖台账、申购、入库、报修、处置、盘点等重点模块。内容聚焦企业落地实践,帮助提升资产管理效率、降低风险、保障审计合规。
|
29天前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
30天前
|
消息中间件 运维 监控
交易所开发核心架构拆解与流程图
本文系统解析交易所架构核心要素,从接入层到清算结算,结合系统流程图拆解各模块职责与协作机制。深入剖析撮合引擎、账本设计与风控逻辑,建立性能、可用性、安全性等多维评估标准,并提供可落地的流程图绘制、压测优化与进阶学习路径,助力构建高效、安全、可扩展的交易系统。(238字)