作者:赵禹光,Seata Contributor,SkyWalking PMC

背景前序

正如所看到的文章题目,就在此时,Seata 与 SkyWalking 两个生态融合,取得了阶段性成果。下面就结合文章内容,给你徐徐道来。

事情的起因是这样的,Seata、SkyWalking 分别是分布式事务领域、一站式 APM 领域的的佼佼者,这一点通过 Github Star 排名就可以知道,也就不再赘述了。所以早在 2019 年,Seata 的用户就提出了使用 SkyWalking 观测的诉求。

Seata 融入 SkyWalking 监控后,就有了 APM 特性,用户在定位 Seata 分布式事务的问题时,可以通过分布式链路、机器指标、日志内容等多个维度进行问题剖析,实现定位问题的提效。

那结合这个诉求,两个社区感兴趣的同学就开始展开了初步讨论和实践,但是由于当时 Seata 的传输协议中,没有类似于 HTTP Header 的面向传输的消息头部,所以实现的第一版虽然实现了监控观测,但是兼容性非常不友好,这在解决分布式事务的监控中,显然是有欠缺的。故此,我们开启了二番讨论,结论是兼容性的前置条件是必须的,所以,Seata 要实现传输协议升级,就此 Seata 将此事放在了 RoadMap 中。SkyWalking 社区这边也暂时搁置了这件事。

时光荏苒,转眼 1 年多就过去了,Seata 社区在过程中已经完成了传输协议的升级,那我们就重启此事。

一、Seata 接入 SkyWalking 后,用户得到了什么

背景已经叙述完了,由于时间有些久,可能大家对两个生态融合之后带来的效果,也不是很清晰了,这里就我的个人的理解,介绍下两个生态融合后,给用户带来的益处:

  • Seata的性能可被更好的观测:

我看到很多 Seata 分享的时候都有用户提问,Seata性能消耗数据,因为分布式事务的性能消耗与场景关系非常大,所以用户通过 SkyWalking 可以更简单的观测自己的场景,自己给自己答案。

  • 分布式事务执行过程有痕迹

在 AT 模式下,Seata 通过面向传输的消息头部,传递全局事务 XID ,全局事务执行完成后,每个在 DB 中的执行过程都会被清理掉,这在回溯执行过程的时候非常不友好,这些海量数据 Seata 可不会存储,这严重增加分布式事务关联数据库表的空间,带来不必要的性能消耗。所以两个生态融合后,SkyWalking 相关的数据库监控,就可以记录这些执行过程的海量数据。

  • 定位问题的提效

在日志中打印 XID 的同时打印 TraceId ,当出现问题想回溯 XID 相关联的全局链路时,在 SkyWalking 的展示端输入 TraceId 即可,通过 Seata 整体监控融入 SkyWalking ,不仅拥有全链路领域的监控,还在仪表盘、拓扑图、在线剖析和报警都得到了监控。

  • 入门 Seata 提高一个维度

分布式事务一直被炒得很热,但真正能在市场上落地的也只有 Seata ,所以 Seata 并没有开源的学习范本,所以快速带领大家入门的资料也比较少。而且 Seata 有3个角色、4种经典模式,可以多种组合,综上所诉,不由得让使用者云里雾里,两个生态融合后,用户可以清晰从上帝(监控)知道 Seata 的执行过程,进而透析工作原理。

二、典型 AT 模式监控场景

下面就官方 AT 模式的 Demo ,展示下接入后的 APM 特性。

官方描述的 ToC 交易场景

  1. 用户请求交易服务
  2. 交易服务锁定库存
  3. 交易服务创建账单
  4. 账单服务进行扣款

当 Seata 与 SkyWalking 融合后,场景复原

全局事务正常链路描述

全局事务异常链路描述


用户手册

官网

SkyWalking APM:
http://seata.io/zh-cn/docs/user/apm/skywalking.html

常用链接

Seata: https://github.com/seata/seata
Samples: https://github.com/seata/seata-samples
Release: https://github.com/seata/seata/releases
官网: https://seata.io

投稿

欢迎大家将 Seata 相关的实践文章投稿至:slievrly@gmail.com

Seata 新特性,APM 支持 SkyWalking相关推荐

  1. Docker 1.5新特性:支持IPV6、只读容器、容器运行监控,还有彩蛋

    本文讲的是Docker 1.5新特性:支持IPV6.只读容器.容器运行监控,还有彩蛋,[编者的话]Docker 1.5是今年Docker第一个发布版本,在这个版本中Docker加入很多期望已久的新功能 ...

  2. switch 字符串 java_JDK7新特性switch支持字符串

    在JDK7中,switch语句的判断条件增加了对字符串类型的支持.由于字符串的操作在编程中使用频繁,这个新特性的出现为Java编程带来了便利.接下来通过一个案例演示一下在switch语句中使用字符串进 ...

  3. OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法

    OpenSSL项目最近6个月添加了许多新特性, 包括对中国SM2/SM3/SM4算法的支持: SM2椭圆曲线: https://github.com/openssl/openssl/pull/4793 ...

  4. kubernetes1.4新特性:支持两种新的卷插件

    背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...

  5. Kubernetes1.7新特性:支持绕过docker,直接通过containerd管理容器

    背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一 ...

  6. Mozilla新特性只支持https网站

    Mozilla的官方博客2015.4.30正式宣布了淘汰HTTP的方案. 其中包括:设定一个日期,所有的新特性将只提供给HTTPS网站:HTTP网站将逐步被禁止访问浏览器功能,尤其是那些与用户安全和隐 ...

  7. Seata 新特性,APM 支持 SkyWalking,java区块链开发教程pdf

    Seata 融入 SkyWalking 监控后,就有了 APM 特性,用户在定位 Seata 分布式事务的问题时,可以通过分布式链路.机器指标.日志内容等多个维度进行问题剖析,实现定位问题的提效. ​ ...

  8. 【翻译】Apache Hbase新特性--MOB支持(一)

    2019独角兽企业重金招聘Python工程师标准>>> 原文链接:http://blog.cloudera.com/blog/2015/06/inside-apache-hbases ...

  9. asp.net core 6 新特性,支持HTTP/3 端点发布

    ???? 序言 Http3 协议构建在UDP的基础上,是的,就这么神奇,以前被誉为不稳定大神的UDP,现在承担起可靠通讯协议的底层协议.为了消除UDP的不确定性,在UDP协议之上,新增了QUIC协议. ...

最新文章

  1. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
  2. Amarino例程无法使用的问题
  3. CSS的overflow属性:显示 隐藏 滚动显示 自动显示 继承
  4. form表单的一个页面多个上传按钮实例
  5. php正则表达式程序,php正则表达式 Web程序 - 贪吃蛇学院-专业IT技术平台
  6. 精英赛上线|冠军万元奖金
  7. 为什么工厂招人越来越不容易?是招工难还是待遇低?
  8. JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
  9. MacBook Pro macOS 安装 Linux 双系统教程(一)
  10. 如何通过VISIO来画网络拓扑图
  11. GSM和GPRS区别
  12. 「模拟8.19 A嚎叫..(set) B主仆..(DFS) C征程..(DP+堆优化)」
  13. 深度学习基础6(微分,偏导,梯度,链式法则)
  14. 见山是山,见山不是山,见山只是山
  15. MIT研究人员称他们解决了数据中心网络延迟问题
  16. Python 三维网格体素化
  17. 【线性代数】正交向量与正交子空间
  18. jQuery网页版简易qq音乐
  19. 计算机网络(期末详细总结)
  20. 第二周:PSP进度条

热门文章

  1. 010 自动技能的设计和实现
  2. 1115 Counting Nodes in a BST (30 分)【难度: 一般 / 知识点: 构建二叉搜索树】
  3. 2.2.3 调度算法的评价指标
  4. 简单分享一个轻量级自动化测试框架目录结构设计
  5. Spring boot的Bean使用JSR 303校验
  6. RabbitMQ持久化交换机队列
  7. Tomcat在自定义xml文件中配置虚拟目录
  8. C#读取与修改XML文档
  9. C#中String与Datetime
  10. Java非访问修饰符