背景

旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉。然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了。或者公司内部有链路追踪系统,虽然可以很轻松地通过监控判断问题出现的原因,但是对其中的逻辑完全摸不着头脑。只能上网搜索一番。

旁友,skywalking分布式链路追踪框架了解一下。

有的旁友会有疑惑,我的Spring Boot 就是一个单体应用么,不需要链路追踪?有问题直接翻日志就行了,但是即使是一个 Spring Boot 单体应用,也会和以下服务打交道:

  • 关系数据库,例如说 MySQL、PostgreSQL 等等。
  • 缓存数据库,例如说 Redis、Memcached 等等。
  • 外部三方服务,例如说微信公众号、微信支付、支付宝支付、短信平台等等

可见,仅仅一个 Spring Boot 单体应用,就已经涉及到分布在不同进程中的服务了。此时,就非常有必要用上skywalking。例如说,线上某个 接口访问非常慢,用SkyWalking 可以定位是MySQL 查询比较慢呢,还是调用的第三方服务比较慢。

而在分布式服务中,各个大厂内部系统成百上千的,链路关系更加复杂。比如你在外卖平台上的一个点击请求可能跨了内部几十个Java应用了,在这么长的链路里去排查问题,没有好使的工具怎么行呢。如图是当前分布式系统的现状,图片来源:鹰眼下的淘宝分布式调用跟踪系统介绍

根据上图,我们设想:

1.系统中有可能每天都在增加新服务或删除旧服务,也可能进行升级,当系统出现错误,我们如何定位问题?

2.当用户请求时,响应缓慢,怎么定位问题?

3.服务可能由不同的编程语言开发,1、2 定位问题的方式,是否适合所有编程语言?

Skywalking框架

1.介绍

SkyWalking 是什么?

官方网址 skywalking.apache.org/

skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

代码无侵入,通信方式采用GRPC,实现方式是java探针,支持告警,JVM监控,支持全局调用统计等等

skywalking的架构参考了谷歌的Dapper框架的论文,Dapper并没有开源,只给了篇论文,感兴趣但又不喜英文文档的旁友可以看看论文的中文翻译Dapper,大规模分布式系统的跟踪系统

整体架构如下:

  • Tracing Metrics Logging :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。Java应用通常使用SkyWalking Agent 收集数据
  • SkyWalking OAP :skywalking服务端(Transport layer,Receiver cluster,Aggregator cluster)负责接收 Agent 发送的 Tracing 数据信息,然后进行分析,存储到外部存储器( Storage ),最终提供查询功能。
  • Storage option :Tracing 数据存储。目前支持 ES、H2 多种存储器。我们用ES存储即可 。
  • GUI :负责提供可视化控台,查看链路等
  • Alarm:提供告警功能,这里不展示讲

2.Docker方式搭建Skywalking环境

为了快速搭建环境,避免各种系统、配置环境不同造成踩坑的情况。我们用docker直接创建ElasticSearch、Skywalking-OAP、Skywalking-UI以及ES的管理工具Kibana。这样一套运行环境直接就能用了。话不多说,直接开干

整体架构如下:

用到的工具版本号如下表:

工具 版本号
ElasticSearch 7.14.2
Kibana 7.14.2
skywalking-oap-server 9.1.0
skywalking-ui 9.1.0

其中skywalking的docker-compos.yml运行脚本可以从官方的Github上获取apache/skywalking/docker

脚本需要修改,直接参考我的就行,不懂的参数都有具体说明:

version: '3'
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.14.2container_name: elasticsearchports:- 9200:9200- 9300:9300environment:- "cluster.name=elasticsearch"- "bootstrap.memory_lock=true"- "ES_JAVA_OPTS=-Xms256m -Xmx512m"- "discovery.type=single-node"kibana:image: docker.elastic.co/kibana/kibana:7.14.2container_name: kibanadepends_on:- elasticsearchports:- 5601:5601environment:# IP地址为运行电脑的IP地址,Mac上通过 ifconfig en0 命令获取- "elasticsearch.hosts=http://192.168.1.5:9200" skywalking-oap:image: apache/skywalking-oap-server:9.1.0container_name: skywalking-oapdepends_on:- elasticsearchports:- "11800:11800"- "12800:12800"healthcheck:test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]interval: 30stimeout: 10sretries: 3start_period: 10senvironment:TZ: Asia/ShanghaiSW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200SW_HEALTH_CHECKER: defaultSW_TELEMETRY: prometheusskywalking-ui:image: apache/skywalking-ui:9.1.0container_name: skywalking-uidepends_on:- skywalking-oaplinks:- skywalking-oapports:# UI界面程序占用的端口- "8080:8080"environment:TZ: Asia/Shanghai# IP地址为运行电脑的IP地址,Mac上通过 ifconfig en0 命令获取SW_OAP_ADDRESS: http://192.168.1.8:12800

2.1 Docker镜像加速

按上述配好docker-compose.yml文件后,命令行到所在目录下执行docker-compose up可以拉起镜像,第一次运行时会下载镜像,docker默认的镜像仓库在国外,所以下载速度和蜗牛一样慢。为了加速下载,需要配置国内的docker镜像

获取国内docker镜像库地址的方法:

  1. 阿里云官方镜像加速,获取加速器地址文档:阿里云官方镜像加速
  2. 网上搜索docker镜像加速,下面是测过有效的公共镜像库
    • 网易云 hub-mirror.c.163.com
    • 百度云 mirror.baidubce.com

配置方法:

Docker桌面版Preference -> Docker Engine 在Json配置里加上,加好之后重启Docker,然后再重新拉镜像,速度立马快得飞起

分布式链路追踪-skywalking入门体验相关推荐

  1. 分布式链路追踪SkyWalking进阶实战之RPC上报和WebHook通知(三)

    目录 1.自定义SkyWalking链路追踪配置 1.1 什么是TraceId 1.2 使用的背景 1.3 编码 2.SkyWalking-RocketBot性能剖析 3.SkyWalking链路追踪 ...

  2. PHP分布式链路追踪,SkyWalking:分布式架构链路追踪-SkyWalking介绍

    前面几篇文章提到了微服务相关系统的使用与搭建,在微服务架构下的问题也比较突出.正常系统下我们的每个请求都会在同一个系统中进行输出.但是在微服务架构中一个请求可能设置一到多个服务进行处理.服务之间相互依 ...

  3. 猿创征文|链路追踪-Skywalking入门

    背景 旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉.然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了.或者公司内部有链路追踪系统,虽然可以很轻松地通过 ...

  4. 分布式链路追踪-skywalking

    一.分布式调用链 随着业务的高速发展,服务之间的调用关系愈加复杂 线上每一个请求会经过多个业务系统,并产生对各种缓存或者DB 的访问,业务流会经过很多个微服务的处理和传递. 问题: • -次请求的流量 ...

  5. 分布式链路追踪Skywalking过滤Url

    问题 当系统集成了SpringbootAdmin等,健康监测的Url会不停的传到Skywalking的收集器,展示到控制台页面.我们需要进行过滤. 解决 好在这个问题Skywalking已经为我们提供 ...

  6. NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享

    对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...

  7. 分布式链路追踪之SkyWalking

    一 链路追踪简介   在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成.这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模 ...

  8. 微服务链路追踪SkyWalking第一课 SkyWalking简介

    开篇词:从剖析 SkyWalking 源码到吃透 APM 核心知识 你好,我是你的 SkyWalking 老师徐郡明,网名吴小胖,你也可以叫我胖哥.进入互联网行业工作多年,主要从事基础组件开发相关的工 ...

  9. 怎么理解分布式链路追踪技术?

    ▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取纸质技术书 - 1 - 为什么需要链路追踪 在学习分布式链路追踪之前,我们需要先理解这项技术产生的背景,以 ...

最新文章

  1. 参加前端培训主要学习什么语言
  2. 看直播赢大奖-智能物流技术培训
  3. 平台篇-58 HBase 平台实践和应用
  4. 印象笔记电脑版使用技巧_我的印象笔记使用手册(2020)
  5. php数组根据指定列排序
  6. 电源pd功能的充电器_PD快充充电器电源芯片和普通充电器电源芯片有什么区别?...
  7. 有条件忽略测试的JUnit规则
  8. NGINX 配置超时时间
  9. 用android制作一个记事本app_用扁平化呈现一个天气APP
  10. 带你自学Python系列(十七):Python中类的用法(三)
  11. 1.3计算机硬件的主要指标
  12. arcgis合并tif影像_ARCGIS多种影像裁剪
  13. SSM网上超市购物商城管理系统、
  14. Java二叉树的完全性检验
  15. 论文word引用参考文献
  16. JS实现页面字体繁简转换
  17. 淘宝快捷回复短语大全
  18. 巴比特 | 元宇宙每日必读:“由虚向实”的工业元宇宙落地情况如何?未来又将走向何方?...
  19. 殇城的伤感心情日志分享:青春容颜,我却一笔流伤
  20. 特征:什么是特征和特征选择?

热门文章

  1. 关于QQ音乐sign参数的获取
  2. MySQL的order by该如何避免“未命中索引“
  3. [“空头计划“第二期 ] QQ机器人(Python ^3.7 + 机器人框架NoneBot-beta2最新版本)实现
  4. python 读取 word 表格_Python实现批量读取word中表格信息的方法
  5. 炼金术士这本书很不错
  6. python绘制蜡烛图_一步一步教你用Python画出专业的K线图
  7. TM影像7个波段的介绍;NDBI、NDWI和NDVI的区别
  8. QA、QC、QE普及贴,弄清楚才知道自己在做啥!
  9. 详解正则表达式,30分钟彻底搞懂正则
  10. react初探-e.target为null