100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 使用Zipkin和Sleuth进行SpringBoot微服务跟踪

使用Zipkin和Sleuth进行SpringBoot微服务跟踪

时间:2022-05-26 05:47:09

相关推荐

使用Zipkin和Sleuth进行SpringBoot微服务跟踪

在本文中,我们将了解使用Zipkin和Spring cloud sleuth框架的微服务分布式跟踪。

尽管微服务具有自身的挑战,但微服务是出色的架构。 复杂的微服务架构具有与其他微服务的下游和上游依存关系,并且一切都是相互联系的。 在大多数情况下,各个团队只是专注于自己的服务,因此在微服务​​分布式环境中,很难找到任何延迟或在运行时跟踪实际问题。

1.分布式跟踪

随着微服务架构的复杂性增加,跨服务和服务器实例的统一可观察性变得至关重要。 每个服务请求都经过多个服务层,使用传统的调试技术来识别延迟或任何运行时问题变得越来越困难。 分布式跟踪提供了对通过多种服务传输的请求的整体视图,从而可以立即识别问题。

1.1分布式跟踪词汇

跨度–跨度是一项单独的操作。跟踪–跟踪是一个由跨度组成的端到端延迟图。示踪-示踪剂记录跨度和传递需要方面将它们连接到跟踪。

2. Zipkin

Zipkin是一个开放源代码的分布式系统,它提供了用于发送,接收,存储和可视化跟踪详细信息的机制。 这有助于团队将服务器实例之间的活动关联起来,并对我们的服务中发生的事情有更深入的了解。 Zipkin提供UI界面来分析服务之间的跟踪和调用图详细信息。

2.1 Zipkin安装

可以使用三种不同的方式安装zipkin服务器。

Java–我们可以执行以下wget命令来下载最新的zipkin服务器。 如果没有安装wget,只需复制以下URL并粘贴到浏览器中,即可下载最新的zipkin服务器。

wget -O zipkin.jar '/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'

Zipkin源代码–我们可以从github url下面下载zipkin源代码,并在本地计算机上运行zipkin应用程序: https : ///openzipkin/zipkinDocker–我们可以从/openzipkin/docker-zipkin下载docker-zipkin容​​器

对于此示例应用程序,我已经使用Java方法安装了Zipkin服务器。

2.2 Zipkin用户界面

Zipkin UI提供以下功能来分析跨服务的分布式跟踪详细信息:

按服务名称,跨度名称等搜索跟踪 跟踪依赖关系图显示了跨服务的跟踪请求流 提供每个跨度的总跟踪时间的详细信息

通过分析Zipkin UI提供的详细信息,可以更加轻松地发现互连微服务体系结构之间的延迟或任何特定服务问题。

3.春云侦探

Spring cloud sleuth将跟踪和跨度ID添加到Slf4j MDC(映射诊断上下文),以从给定的跟踪或跨度提取日志。Sleuth在常见的分布式跟踪数据模型(例如跟踪,跨度,注释,键值注释)上提供了抽象。 Sleuth会检测Spring应用程序中的公共入口和出口点(servlet filter, rest template, scheduled actions, message channels, zuul filters, feign client)。

3.1 SpringBoot上的Sleuth和Zipkin配置

在Springboot pom.xml中添加以下依赖项,以将zipkin和spring cloud sleuth添加到SpringBoot应用程序中。

pom.xml

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency>

4.样品申请

对于本文,我创建了一个示例应用程序,该应用程序由三个不同的微服务组成,分别称为UserGreetingServiceUserNameServiceUserAddressService

UserGreetingService实习生调用UserNameServiceUserAddressService服务,以为用户构造完整的问候消息以及名称和地址详细信息。

UserGreetingService.java

@SpringBootApplication@RestController@CrossOriginpublic class UserGreetingService {@RequestMapping("/api/user/greet")public String greet() {String greetingMsg = "Hello";String userName = restTemplate().getForObject("http://localhost:3001/api/user/name", String.class);String userAddress = restTemplate().getForObject("http://localhost:3002/api/user/address", String.class);return greetingMsg + " " + userName + "!\n\n" + userAddress;}@BeanRestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(UserGreetingService.class,"--spring.application.name=user-greeting-service","--server.port=3000");}}

为了介绍服务延迟,我有意向UserNameServiceUserAddressService服务添加了Thread.sleep(1000)Thread.sleep(2000)

您可以从github链接下载示例代码– /VishSinha/springbootzipkindemo

4.1启动Zipkin服务器

要在本地环境中启动zipkin服务器,请转至我们下载zipkin服务器的目录,然后打开命令提示符或终端并执行以下命令:

java -jar zipkin-server-2.5.0-exec.jar

一旦启动zipkin服务器,就可以使用URL浏览Zipkin UI – http:// localhost:9411 / zipkin /

4.2运行样本

从github下载示例代码后,使用您最喜欢的IDE(例如eclipse,Intellij)或使用命令提示符启动所有三个微服务。

一旦所有三个springboot微服务都启动,请使用浏览器或邮递员UserGreetingService端点URL http:// localhost:3000 / api / user / greet 。

总体而言,您会注意到问候服务花费了3秒钟以上的时间才能做出响应。 现在,让我们打开Zipkin UI来分析后台发生的情况以及为什么总响应时间超过3秒。

打开浏览器窗口,并使用默认URL – http:// localhost:9411 / zipkin呈现Zipkin UI。 这将呈现zipkin默认搜索页面。

Zipkin用户界面

让我们从服务名称中选择user-greeting-service,然后单击Find Traces按钮。

您将看到问候服务的总共3个跨度以及总的响应时间。

Zipkin UI查找跟踪

单击“ 3 spans”链接,这将呈现每个服务响应时间的详细信息以及以下其他详细信息。

Zipkin UI Spans信息

此外,通过单击每个服务跨度,我们可以获得每个服务请求的跟踪ID,跨度ID,父跟踪ID,服务器实例信息和其他跟踪详细信息。 这可以轻松地帮助我们排除任何故障的微服务或延迟问题。

Zipkin UI跨度信息

打开Zipkin UI的“依赖关系”部分后,这将在整个服务中呈现服务依赖关系图,如下所示:

Zipkin UI依赖图

5.结论

总体zipkin非常易于集成基于云的微服务应用程序,这为整个服务提供了很多见解和信息,以分析服务的整体运行状况。 使用Zipkin,我们可以轻松识别任何故障服务,并可以采取纠正措施。

6.参考

https://zipkin.io /openzipkin/zipkin

翻译自: //03/springboot-microservices-tracing-with-zipkin-and-sleuth.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。