Uso minimalista do Spring Cloud Sleuth

Introdução

No ambiente de microsserviço, uma solicitação pode causar dezenas ou centenas de chamadas entre os serviços do lado do servidor. No momento, quando há um problema, há algumas questões que devemos considerar:

  • Como localizar rapidamente o problema?
  • Quais serviços estão envolvidos no problema?
  • Qual serviço está com problema?

No momento, o rastreamento de link distribuído (Spring Cloud Sleuth) pode nos ajudar a resolver o problema.

Diagrama esquemático do site oficial:
Insira a descrição da imagem aqui
diagrama esquemático simples:
Insira a descrição da imagem aqui

Glossário:

  • Trace: um conjunto de Span semelhante a uma estrutura de árvore, que representa um link de chamada e tem um identificador exclusivo
  • span: indica a origem do link de chamada. Um entendimento popular de span é uma solicitação de informações.

Simples de usar

Primeiro crie um projeto e introduza as seguintes dependências:

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

Configure um nome para o serviço atual para facilitar o teste:

spring.application.name=sleuth-hello

Crie um testeHelloController

@RestController
public class HelloController {

   public static final Logger logger = LoggerFactory.getLogger(HelloController.class);

   @GetMapping("/hello")
    public void hello1(){
        logger.info("hello spring cloud sleuth");
    }
}

Em seguida, inicie o /helloteste de interface de chamada do projeto e você poderá ver o seguinte log no console: O
Insira a descrição da imagem aqui
último falsesignifica: se a informação deve ser enviada para serviços como o Zipkin para coleta e exibição.

Defina mais duas interfaces e hello2ligue para hello3formar uma cadeia de chamadas:

 @GetMapping("/hello2")
    public String hello2() throws InterruptedException {
        logger.info("hello2");
        Thread.sleep(500);
        return restTemplate.getForObject("http://localhost:8080/hello3",String.class);
    }
    @GetMapping("/hello3")
    public String hello3() throws InterruptedException {
        logger.info("hello3");
        Thread.sleep(500);
        return "hello3";
    }

Reinicie e chame a interface hello2
Insira a descrição da imagem aqui
Um rastreamento é composto de vários spans, um rastreamento é equivalente a uma cadeia de chamadas e um intervalo é cada processo de chamada nesta cadeia.

Integração com Zipkin

O Zipkin é um sistema de rastreamento distribuído de código aberto, com código aberto do Twitter, dedicado a coletar dados de tempo de serviço para resolver o problema de atraso na arquitetura de microsserviço, incluindo coleta, armazenamento, pesquisa e exibição de dados.

Prepare o ambiente

Após a versão Spring Cloud H, não há necessidade de instalar Elasticsearch, Zipkin e outros pacotes tão pesados ​​quanto antes. Só precisa baixar um pacote jar para começar. Endereço para download https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

Comece após fazer o download do
Iniciar comando + tu
servidor View http: // localhost: 9411 /
Insira a descrição da imagem aqui

Integração

Adicionar dependência:

 <!--包含了sleuth+zipkin-->
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

Adicionar arquivo de configuração:

# zipkin/sleuth 地址
spring.zipkin.base-url=http://localhost:9411
# 配置采样比例 默认0.1
spring.sleuth.sampler.rate=1

Reinicie o projeto, chame a /hello2interface e verifique o rastreamento da chamada em http: // localhost: 9411 /
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_41262903/article/details/106260106
Recomendado
Clasificación