美文网首页
07.SpringCloud中Sleuth+zipkin实现微服

07.SpringCloud中Sleuth+zipkin实现微服

作者: LewisZhu | 来源:发表于2020-01-03 17:08 被阅读0次

由于微服务之间的调用比较复杂,一般用sleuth跟踪请求调用。

1.sleuth的简单使用

1>.添加sleuth的依赖

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

书接上文,我们有一个provider和一个consumer都注册到了注册中心,并且provider提供了一个login的方法。
2>.配置application.yml

logging:
  level:info

3>.这样在日志中就可以看到日志的信息

2.sleuth整合zipkin(开源,数据追踪系统)

1>.新建spring Initializer项目dm-zipkin-server

2>.添加zipkin相关的依赖

<properties>
    <java.version>1.8</java.version>
    <zipkin.version>2.12.2</zipkin.version>
</properties>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-server</artifactId>
    <version>${zipkin.version}</version>
</dependency>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-ui</artifactId>
    <version>${zipkin.version}</version>
</dependency>
<dependency>
    <groupId>io.zipkin.java</groupId>
    <artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
    <version>${zipkin.version}</version>
</dependency>

3>.添加注解

@SpringBootApplication
@EnableZipkinServer
public class ZipkinServerApplication {...}

4>.配置application.yml

# 配置端口之后就可以通过http://localhost:7700访问到微服务追踪的管理界面
server:
  port: 7700
spring:
  application:
    name: zipkin-server

5>.整合zipkin到需要追踪的服务中(dm-user-consumer,dm-user-provider)
firstly,在要追踪的服务中添加依赖

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

furthermore,在需要追踪的微服务中,指定zipkin server的地址和采样率。

spring:
  zipkin:
    base-url: http://localhost:7700
  sleuth:
    sampler:
      probability: 1.0  # percentage: 1.0   1.0表示100%采样

则可以在http://localhost:7700看到追踪的请求

Screen Shot 2020-01-03 at 4.12.30 PM.png

3.数据追踪可能产生的问题

问题一:耦合性,需要追踪的服务都需要连接到zipkin server
问题二:不稳定性,网络出现问题就无法保证收集到跟踪数据

解决方案:使用消息中间件,收集到的数据先发到消息中间件(RabbitMQ),然后zipkin server再从消息中间件取出收据进行分析

问题三:重启zipkin server之后,追踪到的数据会丢失
解决方案:数据持久化存储 mySQL

zipkin:
  storage:
    type: mysql
    mysql:
      jdbcUrl: jdbc:mysql://localhost:3306/zipkin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
      username: root
      password: abcdefg
management:
  metrics:
    web:
      server:
        auto-time-requests: false #不加会启动报错

3.发送日志信息到kafka

1>.新建spring Initializer项目dm-kafka-client

2>.添加kafka依赖

<dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
<dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>

相关文章

网友评论

      本文标题:07.SpringCloud中Sleuth+zipkin实现微服

      本文链接:https://www.haomeiwen.com/subject/joizoctx.html