> Java > java지도 시간 > 본문

spring-cloud-sleuth+zipkin 추적 서비스 구현 (2)

巴扎黑
풀어 주다: 2017-06-26 11:09:16
원래의
2006명이 탐색했습니다.

1. 간략한 설명

이전 섹션 "spring-cloud-sleuth+zipkin 추적 서비스 구현(1)"에서는 microservice-zipkin-server, microservice-zipkin-client, microservice-zipkin-client-backend 3개를 사용했습니다. 프로그램은 통신 및 메모리 내 데이터 지속성을 위해 http 메소드를 사용하여 서비스 호출 링크 추적을 구현합니다.
여기서 두 가지 변경 사항을 적용합니다. 첫째, 데이터가 메모리에 저장되는 방식에서 데이터베이스에 유지되는 방식으로 변경됩니다. 둘째, http 통신이 mq 비동기 통신으로 변경됩니다.

우리는 여전히 이전 섹션의 세 가지 프로그램을 사용하여 모든 사람이 차이점을 볼 수 있도록 수정합니다. 여기서는 차이점을 나타내기 위해 각 프로젝트 이름에 스트림을 추가합니다.

2. microservice-zipkin-stream-server

MQ를 통해 통신하도록 http 메서드를 변경하려면 원래 종속 io.zipkin.java:zipkin-server를 spring-cloud-sleuth-zipkin-Stream으로 바꿔야 합니다. spring-cloud-starter-stream-rabbit
mysql 지속성을 동시에 사용하려면 mysql 관련 종속성을 추가해야 합니다.
모든 Maven 종속성은 다음과 같습니다.

"
  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!--zipkin依赖-->
    <!--此依赖会自动引入spring-cloud-sleuth-stream并且引入zipkin的依赖包-->
    <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-rabbit</artifactId>
    </dependency>
    <dependency>
        <groupId>io.zipkin.java</groupId>
        <artifactId>zipkin-autoconfigure-ui</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!--保存到数据库需要如下依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
 
"
로그인 후 복사

위의 Maven 종속성을 추가한 후 시작 클래스 ZipkinServer의 @EnableZipkinServer 주석을 @EnableZipkinStreamServer로 대체합니다.
자세한 내용은 다음과 같습니다.

package com.yangyang.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer;

/**
 * Created by chenshunyang on 2017/5/24.
 */
@EnableZipkinStreamServer// //使用Stream方式启动ZipkinServer
@SpringBootApplication
public class ZipkinStreamServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZipkinStreamServerApplication.class,args);
    }
}
로그인 후 복사

소스 코드를 클릭하세요. @EnableZipkinStreamServer 주석이 도입되었으며 @EnableZipkinServer 주석도 Rabbit-mq 메시지 대기열 수신기를 생성한다는 것을 알 수 있습니다.
spring-cloud-sleuth+zipkin 추적 서비스 구현 (2)

메시지 클라이언트에서 보낸 mq 메시지 수신을 용이하게 합니다.

메시지 미들웨어 Rabbit mq와 mysql을 사용하므로 구성 파일 application.properties에 관련 구성도 추가해야 합니다.

 server.port=11020
spring.application.name=microservice-zipkin-stream-server
#zipkin数据保存到数据库中需要进行如下配置
#表示当前程序不使用sleuth
spring.sleuth.enabled=false
#表示zipkin数据存储方式是mysql
zipkin.storage.type=mysql
#数据库脚本创建地址,当有多个是可使用[x]表示集合第几个元素
spring.datasource.schema[0]=classpath:/zipkin.sql
#spring boot数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/zipkin?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialize=true
spring.datasource.continue-on-error=true


#rabbitmq配置
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
로그인 후 복사

그중 zipkin.sql은 공식 웹사이트에 직접 복사할 수도 있고, 복사해도 됩니다.
http 통신의 간섭을 피하기 위해 원래 수신 포트를 11008에서 11020으로 변경하고 프로그램을 시작했는데 오류가 보고되지 않았고 프로그램이 성공적으로 시작되었음을 나타내는 토끼 연결 로그를 볼 수 있었습니다.

3.microservice-zipkin-stream-client, microservice-zipkin-client-stream-backend

이전 섹션의 구성과 동일하며 클라이언트 구성도 매우 간단합니다. Maven 종속성은 원래 spring-cloud만 필요합니다. - starter-zipkin을 다음 두 종속성으로 바꾸면 됩니다

     <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-rabbit</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
로그인 후 복사

추가로 구성 파일에 MQ에 연결하기 위한 구성을 추가하세요

server:
  port: 11021

spring:
  application:
    name: microservice-zipkin-stream-client

 #rabbitmq配置
  rabbitmq:
    host: 127.0.0.1
    port : 5672
    username: guest
    password: guest
로그인 후 복사

물론 차이점을 보여주기 위해 포트도 그에 맞게 조정되었습니다

4. Test

액세스: http://localhost:11021/call/1 이전 섹션과 마찬가지로 이전 섹션으로 이동하여 Rabbit-mq 통신의 sleuth 기능이 적용되었음을 설명할 수 있습니다.

저희는 소비자 주소를 여러번 방문했는데 로그를 보면 요청에 소요되는 시간이 갑자기 오래 걸리지는 않을 것임을 알 수 있습니다.
MQ 통신이 제공하는 데이터 손실 없는 기능을 경험하기 위해 데이터베이스의 데이터를 지운 다음 zipkin 서버 인터페이스를 새로 고치면 더 이상 데이터가 없는 것을 볼 수 있습니다

그럼 닫고 싶습니다. zipkin-server 프로그램 그런 다음 소비자 주소를 여러 번 방문한 후 zipkin 서버 프로그램을 다시 시작하고 UI 인터페이스에 액세스하면 곧 선택할 수 있는 데이터가 표시됩니다. 시간이 지나면 데이터베이스의 레코드 수가 더 이상 이전과 동일하지 않습니다. 0 항목

이는 zipkin을 다시 시작한 후 MQ에서 종료 기간 동안 공급자와 소비자가 생성한 정보 데이터를 성공적으로 얻었음을 보여줍니다. 이런 식으로 spring-cloud-sleuth-stream+zipkin의 나머지 서비스 호출 추적 기능을 사용할 수 있다.


위 내용은 spring-cloud-sleuth+zipkin 추적 서비스 구현 (2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!