springcloud10-链路追踪(日志埋点追踪)组件Sleuth实战
1、微服务下的链路追踪讲解和重要性
简介:讲解什么是分布式链路追踪系统,及使用好处
2、SpringCloud的链路追踪组件Sleuth实战
简介:讲解分布式链路追踪组件Sleuth实战
1、官方文档
http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#sleuth-adding-project
2、什么是Sleuth
一个组件,专门用于记录链路数据的开源组件
[order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false]
1、第一个值,spring.application.name的值
2、第二个值,96f95a0dd81fe3ab ,sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID
3、第三个值,852ef4cfcdecabf3、spanid 基本的工作单元,获取元数据,如发送一个http
4、第四个值:false,是否要将该信息输出到zipkin服务中来收集和展示。
3、添加依赖(所有涉及项目都要加此依赖)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
3、SpringCloud的链路追踪组件Sleuth常见问题说明
简介:讲解分布式链路追踪组件Sleuth常见问题说明
日志不输出?需要加入日志埋点
如:
1.产品服务中(product-service)
package com.example.demo.service; import com.example.demo.domain.Product; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.util.*; /** * Created by zhangjiawen on 2019/5/17. */ @Service public class ProductServiceImpl implements ProductService { private static final Map<Integer,Product> map=new HashMap<Integer,Product>(); private final Logger logger = LoggerFactory.getLogger(getClass()); static { Product p1=new Product(1,"荣耀8X",20000,200); Product p2=new Product(2,"iPhoneX",254,233); Product p3=new Product(3,"三星S10",3546,444); Product p4=new Product(4,"iPhone8",4567,555); Product p5=new Product(5,"电脑",6745,666); map.put(p1.getId(),p1); map.put(p2.getId(),p2); map.put(p3.getId(),p3); map.put(p4.getId(),p4); map.put(p5.getId(),p5); } @Override public List<Product> getProductList() { Collection<Product> collection= map.values(); return new ArrayList<>(collection); } @Override public Product getProductById(int id) { logger.info("service product findByid"); return map.get(id); } }
2.订单服务中(order-service)
package com.example.demo.service.impl; import com.example.demo.domain.ProductOrder; import com.example.demo.service.ProductClient; import com.example.demo.service.ProductOrderService; import com.example.demo.util.JsonUtils; import com.fasterxml.jackson.databind.JsonNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.Date; import java.util.UUID; @Service public class ProductOrderServiceImpl implements ProductOrderService { @Autowired private RestTemplate restTemplate; @SuppressWarnings("SpringJavaAutowiringInspection") @Autowired private ProductClient productClient; private final Logger logger= LoggerFactory.getLogger(getClass()); //用FeignClient方式实现 @Override public ProductOrder save2(int userId, int productId) { logger.info("servic save2 order"); String strProduct = productClient.findById(productId); JsonNode jsonNode = JsonUtils.str2JsonNode(strProduct); //System.out.println(strProduct); ProductOrder productOrder = new ProductOrder(); productOrder.setCreateTime(new Date()); productOrder.setUserId(userId); productOrder.setTradeNo(UUID.randomUUID().toString()); productOrder.setProductName(jsonNode.get("name").toString()); // System.out.println(productOrder.getProductName()); return productOrder; } }

浙公网安备 33010602011771号