重庆网站开发公司,网站正在建设中模板,怎么重新安装我的wordpress,网站设计和美工一样吗在本文中#xff0c;我们将了解使用Zipkin和Spring cloud sleuth框架的微服务分布式跟踪。 尽管微服务具有自身的挑战#xff0c;但微服务是出色的架构。 复杂的微服务架构具有与其他微服务的下游和上游依存关系#xff0c;并且一切都是相互联系的。 在大多数情况下#x… 在本文中我们将了解使用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 https://search.maven.org/remote_content?gio.zipkin.javaazipkin-servervLATESTcexec Zipkin源代码–我们可以从github url下面下载zipkin源代码并在本地计算机上运行zipkin应用程序 https : //github.com/openzipkin/zipkin Docker –我们可以从https://github.com/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 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-sleuth/artifactId
/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-zipkin/artifactId
/dependency4.样品申请 对于本文我创建了一个示例应用程序该应用程序由三个不同的微服务组成分别称为UserGreetingService UserNameService和UserAddressService 。 UserGreetingService实习生调用UserNameService和UserAddressService服务以为用户构造完整的问候消息以及名称和地址详细信息。 UserGreetingService.java SpringBootApplication
RestController
CrossOrigin
public 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.nameuser-greeting-service,--server.port3000);}
} 为了介绍服务延迟我有意向UserNameService和UserAddressService服务添加了Thread.sleep(1000)和Thread.sleep(2000) 。 您可以从github链接下载示例代码– https://github.com/VishSinha/springbootzipkindemo 4.1启动Zipkin服务器 要在本地环境中启动zipkin服务器请转至我们下载zipkin服务器的目录然后打开命令提示符或终端并执行以下命令 java -jar zipkin-server-2.5.0-exec.jar 一旦启动zipkin服务器就可以使用URL浏览Zipkin UI – http// localhost9411 / zipkin / 4.2运行样本 从github下载示例代码后使用您最喜欢的IDE例如eclipseIntellij或使用命令提示符启动所有三个微服务。 一旦所有三个springboot微服务都启动请使用浏览器或邮递员UserGreetingService端点URL http// localhost3000 / api / user / greet 。 总体而言您会注意到问候服务花费了3秒钟以上的时间才能做出响应。 现在让我们打开Zipkin UI来分析后台发生的情况以及为什么总响应时间超过3秒。 打开浏览器窗口并使用默认URL – http// localhost9411 / 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 https://github.com/openzipkin/zipkin 翻译自: https://www.javacodegeeks.com/2018/03/springboot-microservices-tracing-with-zipkin-and-sleuth.html