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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
应用实时监控服务-应用监控,每月50GB免费额度
云原生网关 MSE Higress,422元/月
简介: 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 事务分组名称,系统会自动与上一步创建的实例做关联映射。


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

 

相关文章
|
23天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
22天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
142 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
21天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
151 36
微服务架构解析:跨越传统架构的技术革命
|
10天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
38 3
|
8天前
|
前端开发 搜索推荐 安全
陪玩系统架构设计陪玩系统前后端开发,陪玩前端设计是如何让人眼前一亮的?
陪玩系统的架构设计、前后端开发及前端设计是构建吸引用户、功能完善的平台关键。架构需考虑用户需求、技术选型、安全性等,确保稳定性和扩展性。前端可选用React、Vue或Uniapp,后端用Spring Boot或Django,数据库结合MySQL和MongoDB。功能涵盖用户管理、陪玩者管理、订单处理、智能匹配与通讯。安全性方面采用SSL加密和定期漏洞扫描。前端设计注重美观、易用及个性化推荐,提升用户体验和平台粘性。
34 0
|
24天前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
56 8
|
24天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
23天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
35 1
|
28天前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
24天前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
43 1