如何轻松和安全地构建的满足合规要求的智能产品,实现业务需求?4月26日,告诉你答案! 了解详情
写点什么

Apache ShardingSphere (Incubating) 性能监控指南

  • 2019 年 6 月 18 日
  • 本文字数:0 字

    阅读完需:约 1 分钟

Apache ShardingSphere (Incubating)性能监控指南

看过《Apache ShardingSphere(Incubating)对接京东白条实战》的同学应该都了解,对接白条过程中遇到的问题几乎全部是借助于 SGM 来定位并解决的,可见性能监控的重要性。相对于商业化的 SGM 产品,ShardingSphere 也提供了开源的解决方案。近期,ShardingSphere 的性能监控能力又得到了一次加强,为用户提供了多样化的选择,在此一并总结一下。


概念


APM (Application Performance Monitoring)


APM(Application Performance Monitoring)是应用性能监控的缩写。目前 APM 的主要功能着眼于分布式系统的性能诊断,其主要功能包括调用链展示,应用拓扑分析等。


ShardingSphere 并不负责如何采集、存储以及展示应用性能监控的相关数据,而是将 SQL 解析与 SQL 执行这两块数据分片的最核心的相关信息发送至应用性能监控系统,并交由其处理。 换句话说,ShardingSphere 仅负责产生具有价值的数据,并通过标准协议递交至相关系统。ShardingSphere 可以通过两种方式对接应用性能监控系统,下面分别介绍。


SkyWalking 自动探针

ShardingSphere 团队与 SkyWalking 团队共同合作,在 SkyWalking 中实现了 ShardingSphere 自动探针,可以将相关的应用性能数据自动发送到 SkyWalking 中。目前支持的版本的有:Sharding-JDBC 1.5.x 和 ShardingSphere 3.0.0,随后 ShardingSphere 4.0.0-RC1 也会很快得到支持。未来 ShardingSphere 的每个版本都会保证 SkyWalking 的自动探针可用,可以在 SkyWalking 的支持列表里查到具体版本:


https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/Supported-list.md


SkyWalking 最近发生了两件大事,一个是从孵化器毕业,成为 Apache 顶级项目;另一个是完成了新 UI 的升级。那么到底会有什么惊喜?接下来就让我们一起动手体验。


使用自动探针的方式,不会对代码有任何侵入,只需要搭建 SkyWalking 的环境就可以了。没有使用过的小伙伴不要害怕,全程几乎只要执行一个脚本就完成了,这一点非常人性化。详情见https://github.com/apache/skywalking/blob/master/docs/en/setup/service-agent/java-agent/README.md


拓扑图展示



ShardingSphere 连接两个真实数据库,每个数据库中有两个表。拓扑图中可以显示出服务间的调用类型,请求量,平响等信息。


追踪数据展示



从跟踪图中可以能够看到 SQL 解析和执行的情况。


/Sharding-Sphere/parseSQL/ : 表示本次逻辑 SQL 的解析性能。



/Sharding-Sphere/executeSQL/ : 表示具体执行的真实 SQL 的性能。



在追踪/Sharding-Sphere/executeSQL/的同一线程中,JDBC 自动探针会展示真实 SQL 的详细信息。



OpenTracing 规范

这种方式是使用 OpenTracing API 发送性能追踪数据。面向 OpenTracing 协议的 APM 产品都可以和 ShardingSphere 自动对接,比如 SkyWalking,Zipkin 和 Jaeger。使用这种方式只需要在启动时配置 OpenTracing 协议的实现者即可。 它的优点是可以兼容所有的与 OpenTracing 协议兼容的产品作为 APM 的展现系统,如果采用公司愿意实现自己的 APM 系统,也只需要实现 OpenTracing 协议,即可自动展示 ShardingSphere 的链路追踪信息。 缺点是 OpenTracing 协议发展并不稳定,较新的版本实现者较少,且协议本身过于中立,对于个性化的相关产品的实现不如原生支持强大。


想使用 SkyWalking 的同学,由于有自动探针的存在,已经不需要用这种方式了。所以,接下来以 Zipkin 为例为大家展示另一种监控效果。


Zipkin 是 Twitter 基于 Google 的论文 Dapper 的开源实现,用于跟踪分布式服务之间的应用数据链路,分析处理延时,帮助我们改进系统的性能和定位故障。环境搭建请参考:


https://zipkin.apache.org/pages/quickstart.html


追踪数据展示



/Sharding-Sphere/parseSQL/



/Sharding-Sphere/executeSQL/



可以看到,今天介绍的两种方式,界面不同,但展示的信息是一样的。需要强调的是,ShardingSphere 使用的 OpenTracing 版本是 0.30.0,并不支持 0.31.0 及以上版本。0.31.0 较之前变化较大,基础的类名都有变化,如 ActiveSpan 变为 Scope。所以,如果想使用 0.30.0 以上版本,用户需要定制开发。


小结

对于新用户,推荐第一种方式,不需要考虑版本兼容性问题,插件丰富,有非常高的易用性。而且刚从 Apache 毕业的 SkyWalking 社区活跃度很高,会不断的有新东西涌现出来。对于之前已选型非 SkyWalking 的用户,应该使用第二种方式,实现 OpenTracing 接口的监控系统都可以接入。


作者

张永伦,京东数科高级软件工程师,Apache ShardingSphere (Incubating) PPMC。长期从事分布式系统的高可用、高并发相关工作。热衷于网络 IO、性能优化方面的技术挑战。目前专注于 Sharding-Proxy 的持续优化和 APM 的开发工作。


本文转载自公众号 ShardingSphere 官微(ID:Sharding-Sphere)


原文链接


https://mp.weixin.qq.com/s/LJlq7_RlB7vzbwkJzve5ig


2019 年 6 月 18 日 08:008293

评论

发布
暂无评论
发现更多内容

Markdown-it 原理解析

冴羽

前端 markdown vuepress 博客开发 markdown-it

19 Prometheus之告警的艺术

穿过生命散发芬芳

Prometheus 1月月更

Spring中的单例模式使用

JavaEdge

1月月更

架构训练营模块五作业

沈益飞

架构训练营 架构师训练营 4 期

模块五

浮生若梦

普通开发者,如何成为Apache项目的commiter ?| 人物专访

云智慧AIOps社区

开源 程序员 算法 运维 时序数据

盘点 2021 征文大赛获奖名单公布!

InfoQ写作社区官方

盘点2021 热门活动

外网打点,内网渗透

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

如何自学编程?

守护石

程序员 程序员人生 自学编程 经验总结 大学生毕业

Apache Pulsar 针对 Log4j2 漏洞 (CVE-2021-44228) 的解决方案

Apache Pulsar

开源 云原生 中间件 Apache Pulsar log4j2

Spring 都在用的技术,你确定不过来看看?2️⃣

XiaoLin_Java

1月月更

微博评论的高性能高可用计算架构设计

皓月

「架构实战营」

InnoDB 引擎了解(双写机制)

Ayue、

MySQL 数据库 1月月更

如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题

阿里巴巴云原生

阿里云 云原生 性能测试 PTS

黑客实现ARP欺骗

喀拉峻

黑客 网络安全 WEB安全

Jenkins Pipeline: 并发执行

夏兮。

jenkins pipeline jenkins高级用法 parallel

如何真正学习Go 语言[翻译]

宇宙之一粟

Go 学习方法 Go 语言 1月月更

JavaScript 使用 Markdown 制作 PPT

devpoint

markdown 1月月更 slidev

如何提高你的写作技巧

坚果

1月月更

中国AIOps们,你们究竟是在骗谁?

Geek_2749b8

云计算 AIOPS 云服务

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker服务端自动创建topic的原理分析和问题要点指南

浩宇天尚

RocketMQ 消息队列 Alibaba技术 Apache RocketMQ 1月日更

一个cpp协程库的前世今生(二十一)协程重分配

SkyFire

c++ cocpp

【重构前端知识体系之HTML】讲讲对HTML5的一大特性——语义化的理解

归子莫

html html5 前端 语义化 1月月更

SpringBoot:如何优雅地进行参数传递、响应数据封装、异常处理?

CRMEB

中国AIOps们,你们究竟是在骗谁?

Geek_f56666

云计算 AIOPS 云服务

Apache ShardingSphere (Incubating)性能监控指南_数据库_张永伦_InfoQ精选文章