最近,boss交给了我一个任务,研究下链路追踪,大半年前研究过这个问题,但是当时因为手头上有很多别的工作,加上对scala和play framework框架(我司核心系统采用play框架研发的)不太熟悉,所以这个问题研究了一半没有继续下去了。最近,boss把我从业务系统中解放出来,专门研究比较底层偏架构方面的工作,第一个任务就是继续研究之前暂停的分布式微服务链路追踪。
分布式系统中,微服务的可观测性是很重要的指标之一,在对bug追踪和性能问题定位等方面发挥了不可替代的作用。我司主要是to b 业务,对于客户现场的信息收集极其重要,借助于微服务可观测性技术可以解决这个难题。
可观测性主要分为三个部分:logging,tracing,metrics。本文是可观测性系列文章的第一篇,主要是tracing部分的综述。后续还有对metrics和logging部分的研究。
文章目录
- 微服务可观测性研究之distributed tracing--1.综述
- 前言
- 一、分布式链路追踪是什么?
- 二、常见方案
- 1. OpenTracing
- 2. OpenCensus
- 3. OpenTelemetry
- 总结
前言 链路追踪(Distributed Tracing) 一词最早出现于谷歌发布的论文 《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》中,这篇论文对于实现链路追踪,对于后来出现的 Jaeger、Zipkin 等开源分布式追踪项目设计理念仍有很深的影响。
一、分布式链路追踪是什么?
微服务架构是一个分布式的架构,会有很多个不同的服务。不同的服务之前相互调用,如果出现了错误由于一个请求经过了 N 个服务。随着业务的增加越来越多的服务之间的调用,如果没有一个工具去记录调用链,解决问题的时候会毫无头绪,无从下手。所以需要有一个工具能够清楚的了解一个请求经过了哪些服务,顺序是如何,从而能够轻易的定位问题。
分布式跟踪(也称为分布式请求跟踪)是一种用于分析和监控应用程序的方法,尤其是使用微服务架构构建的应用程序。分布式跟踪有助于精确定位故障发生的位置以及导致性能差的原因。所以是微服务可观测性指标中的重要的一环。
从谷歌发布 Dapper 后,分布式链路追踪工具越来越多,以下简单列举了一些常用的链路追踪系统
- Skywalking
- 阿里 鹰眼
- 大众点评 CAT
- Twitter Zipkin
- Naver pinpoint
- Uber Jaeger
随着链路追踪工具越来越多,开源领域主要分为两派,一派是以 CNCF技术委员 会为主的 OpenTracing 的规范,例如 jaeger zipkin 都是遵循了OpenTracing 的规范。而另一派则是谷歌作为发起者的 OpenCensus,而且谷歌本身还是最早提出链路追踪概念的公司,后期连微软也加入了 OpenCensus
二、常见方案 1. OpenTracing代码如下(示例):
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') import ssl ssl._create_default_https_context = ssl._create_unverified_context2. OpenCensus
代码如下(示例):
data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv') print(data.head())
该处使用的url网络请求的数据。
3. OpenTelemetry 总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)