- 这一篇,我们搭建Http + Mysql 和Kafka + mysql两种模式
Http + Mysql
- Http + Mysql 模式,在第一篇的基础上,client端不需要做修改,只需要修改server端即可,server端添加mysql的相关配置和依赖即可,添加下面的依赖:
依赖:
<!--ZipKin组件持久化依赖-->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-storage-mysql</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置:
zipkin.storage.type = mysql
spring.datasource.url = jdbc:mysql://192.168.xx.xx:3306/xxx
spring.datasource.username = xxx
spring.datasource.password = xxx
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.schema[0] = classpath:/xxx.sql
spring.datasource.initialize = true
spring.datasource.continue-on-error = true
kafka + Mysql
- 使用kafka做消息队列传输消息,可以增大吞吐量,提高性能,同事client端不依赖server端了,只依赖kafka,server端挂了也不影响,这种模式client和server端都需要添加对kafka的支持,因此与前面http的通信方式不同,依赖也有很大不同;
Client端
依赖:
<!--zipkin with kafka begin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>
<exclusions>
<exclusion>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
<!--zipkin with kafka end-->
没有写版本号,需要添加以下配置:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置:
spring.sleuth.sampler.percentage = 1 #默认0.1
spring.sleuth.enabled = true #默认true
spring.cloud.stream.kafka.binder.brokers = 192.168.xx.xx:9092 #可以配置多个
spring.cloud.stream.kafka.binder.zkNodes = 192.168.xx.xx:2181 #可以配置多个
Server端
依赖:
<!--ZipKin组件依赖-->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!--ZipKin组件依赖End-->
不写版本号需要添加:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置:
(添加下面关于kafka的配置,其余的配置不变)
spring.sleuth.enabled=false
spring.sampler.percentage=1
spring.cloud.stream.kafka.binder.brokers=192.168.xx.xxx:9092
spring.cloud.stream.kafka.binder.zkNodes=192.168.xx.xxx:2181
spring.cloud.stream.kafka.binder.min-partition-count=1
spring.cloud.stream.kafka.binder.auto-add-partitions=true
spring.cloud.stream.kafka.binder.replication-factor=1
更换注解:
HTTP形式使用注解@EnableZipkinServer,中间件形式使用注解@EnableZipkinStreamServer
总结