训练大纲(第129天)

大家如果想快速有效的学习,思想核心是“以建立知识体系为核心”,具体方法是“守破离”。确保老师课堂上做的操作,反复练习直到熟练。

第253次(ELK&Zipjin)

学习主题:ELK&Zipjin

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

  1. 安装Logstash

    1. Logstash的作用是什么?

答:Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式(支持以TCP/UDP/HTTP多种方式收集数据)。一般工作方式为c/s架构,client 端安装在需要收集日志的主机上,server端负责将收集到各节点日志进行过滤,修改等操作,再一并发往elasticsearch上。

  1. 安装Kibana

    1. Kibana的作用是什么

答:Kibana是一个开源和免费的工具,Kibana可以为ElasticSearch和Logstash提供日志分析友好的web界面,可以帮助汇总、分析和搜索重要数据日志。

  1. Spring_Cloud与ELK的集成-创建项目

    1. 创建Provider接口。
    2. 创建Provider服务。
    3. 修改POM文件,添加服务相关坐标。
    4. 修改POM文件,添加sleuth启动器坐标、添加logstash坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>34sleuth-product-provider-elk</artifactId><version>0.0.1-SNAPSHOT</version><name>34sleuth-product-provider-elk</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>34sleuth-product-service-elk</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--服务跟踪--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></dependency><!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
spring.application.name=gl-sleuth-product-provider-elk
server.port=9001#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/mybatis.type-aliases-package=com.book.product.pojo
mybaits.mapper-locations=classpath:/com/book/product/mapper/*.xmlspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

  1. 创建Consumer服务。
  2. 修改POM文件,添加服务相关坐标。
  3. 修改POM文件,添加sleuth启动器坐标、添加logstash坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>34sleuth-consumer-elk</artifactId><version>0.0.1-SNAPSHOT</version><name>34sleuth-consumer-elk</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>34sleuth-product-service-elk</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--服务跟踪--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></dependency><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
spring.application.name=gl-sleuth-consumer-elk
server.port=9010#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/ribbon.eureka.enabled=true

  1. Spring_Cloud与ELK的集成-操作ELK

    1. Kibana操作界面中的Discover的作用是什么?

答:Discover作用是主要用来做索引查询。

  1. Kibana操作界面中的Visualize的作用是什么?

答:Visualize的作用是用来视图展示,支持许多风格。

  1. Kibana操作界面中的Timelion的作用是什么?

答:Timelion是一个时间序列数据的可视化功能,可以结合在一个单一的可视化完全独立的数据源。它是由一个简单的表达式语言驱动的,用来检索时间序列数据,进行计算,找出复杂的问题的答案,并可视化的结果。这个功能由一系列的功能函数组成。

  1. Kibana操作界面中的DevTools的作用是什么?

答:DevTools可以直接操作es中的数据,使用户方便的通过浏览器直接于ElasticSearch进行交互。

  1. Kibana操作界面中的Management的作用是什么?

答:Management的作用是查看保存在整个Kibana的内容,如发现页,可视化和仪表板。

  1. 什么是Zipkin

    1. 什么是Zipkin?

答:zipkin是一款开源的分布式实时数据追踪系统,其主要功能是聚集来自各个异构系统的实时监控数据。

  1. Zipkin和ELK有什么区别?

答:ZLK提供的是日志的管理,包含了收集、存储、搜索等功能,但是它缺乏实时服务链路跟踪。而zipkin刚好弥补了这个缺陷。

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

第254次(Zipkin&分布式事务)

学习主题:Zipkin&分布式事务

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

  1. 创建Zipkin服务端

    1. @EnableZipkinServer注解的作用是什么?

答:@EnableZipkinServer注解的作用是开启zipkin服务

  1. Spring Cloud与Zipkin的集成

    1. 创建Provider服务接口项目。
    2. 创建Provider服务。
    3. 修改POM文件,添加相关坐标。
    4. 修改POM文件,添加Zipkin坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>36sleuth-product-provider-zipkin</artifactId><version>0.0.1-SNAPSHOT</version><name>36sleuth-product-provider-zipkin</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>36sleuth-product-service-zipkin</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--服务跟踪--><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
  2. 修改配置文件,添加Zipkin URL配置。
spring.application.name=gl-sleuth-product-provider-zipkin
server.port=9001#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/#配置zipkinz连接地址
spring.zipkin.base-url=http://127.0.0.1:9411mybatis.type-aliases-package=com.book.product.pojo
mybaits.mapper-locations=classpath:/com/book/product/mapper/*.xmlspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

  1. 创建Consumer服务。
  2. 修改POM文件,添加相关坐标。
  3. 修改POM文件,添加Zipkin坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>36sleuth-consumer-zipkin</artifactId><version>0.0.1-SNAPSHOT</version><name>36sleuth-consumer-zipkin</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>36sleuth-product-service-zipkin</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--服务跟踪--><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
  2. 修改配置文件,添加Zipkin URL配置。
spring.application.name=gl-sleuth-consumer-zipkin
server.port=9010#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/ribbon.eureka.enabled=truespring.zipkin.base-url=http://127.0.0.1:9411

  1. Zipkin的原理剖析

    1. Zipkin有哪些事件类型?每种事件类型表示什么含义?

答:Zipkin的事件类型有四种:

cs(客户端/消费端发起请)

cr(/客户端/消费端接收到应答)

sr(服务端/生成者接收到请求)

ss(服务端/生产者发送应答)

  1. Zipkin的执行原理是什么?
  1. 采用RabbitMQ收集Zipkin的跟踪数据-创建服务端

    1. @EnableZipkinStreamServer注解的作用是什么?

答:@EnableZipkinStreamServer注解的作用是开启server服务

  1. 采用RabbitMQ收集Zipkin的跟踪数据-创建客户端

    1. 创建Provider服务。
    2. 需改POM文件,添加服务相关坐标。
    3. 修改POM文件,添加Zipkin Stream、Binder Rabbit坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>37sleuth-product-provider-zipkin-mq</artifactId><version>0.0.1-SNAPSHOT</version><name>37sleuth-product-provider-zipkin-mq</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>37sleuth-product-service-zipkin-mq</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--服务跟踪--><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><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-stream</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-stream-binder-rabbit</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
  2. 修改配置文件,添加RabbitMQ连接配置。
spring.application.name=gl-sleuth-product-provider-zipkin-mq
server.port=9001#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/#消息队列的连接配置
spring.rabbitmq.host=192.168.170.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.virtual-host=/mybatis.type-aliases-package=com.book.product.pojo
mybaits.mapper-locations=classpath:/com/book/product/mapper/*.xmlspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

  1. 创建Consumer服务。
  2. 需改POM文件,添加服务相关坐标。
  3. 修改POM文件,添加Zipkin Stream、Binder Rabbit坐标。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>37sleuth-consumer-zipkin-mq</artifactId><version>0.0.1-SNAPSHOT</version><name>37sleuth-consumer-zipkin-mq</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>37sleuth-product-service-zipkin-mq</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--服务跟踪--><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><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-stream</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-stream-binder-rabbit</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置。
  2. 修改配置文件,添加RabbitMQ连接配置。
spring.application.name=gl-sleuth-consumer-zipkin
server.port=9010#设置服务注册中心地址,指向另一个注册中心
eureka.client.service-url.defaultZone=http://admin:1234@192.168.41.242:5050/eureka/,http://admin:1234@192.168.41.242:5051/eureka/ribbon.eureka.enabled=true#消息队列的连接配置
spring.rabbitmq.host=192.168.170.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.virtual-host=/

  1. 访问Zipkin服务端查看结果。
  1. 跟踪数据持久化到MySQL

    1. 创建Zipkin服务端。
    2. 修改POM文件,添加服务相关坐标。
    3. 修改POM文件,添加MySQL数据库驱动坐标,添加jdbc启动器。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bjsxt</groupId><artifactId>38sleuth-zipkin-server-mq-mysql</artifactId><version>0.0.1-SNAPSHOT</version><name>38sleuth-zipkin-server-mq-mysql</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR4</spring-cloud.version></properties><dependencies><dependency><groupId>com.bjsxt</groupId><artifactId>33sleuth-product-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autoconfigure-ui</artifactId><version>2.11.12</version></dependency><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-server</artifactId><version>2.11.9</version></dependency><!--&lt;!&ndash; 使用消息的方式收集数据(使用rabbitmq) &ndash;&gt;--><dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autoconfigure-collector-rabbitmq</artifactId><version>2.11.9</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  1. 修改配置文件,添加服务相关配置
  2. 修改配置文件,添加Zipkin储存类型。
spring.application.name=gl-sleuth-zipkin-server-mq
server.port=9411#防止控制台报错
management.metrics.web.server.auto-time-requests=false#消息队列的连接配置
spring.rabbitmq.host=192.168.170.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.virtual-host=/#zipkin数据保存到数据库
#表示当前程序不使用sleuth
spring.sleuth.enabled=false
#表示zipkin数据存储方式是mysql
zipkin.storage.style=mysql#数据库脚本创建地址
spring.datasource.schema=classpath:/mysql.sql#springboot数据源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springcloud?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.initialize=true
spring.datasource.continue-on-error=true

  1. 执行MySQL脚本。
  2. 访问Zipkin服务端,查看MySQL数据库中数据。
  1. 什么是分布式事务

    1. 什么是分布式事务?

答:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

  1. XA的两阶段提交方案
  2. 什么是XA协议?

答:XA 协议由 Oracle Tuxedo 首先提出的,并交给 X/Open 组织,作为资源管理器(数据库) 与事务管理器的接口标准。目前,Oracle、Informix、DB2 和 Sybase 等各大数据库厂家都提 供对 XA 的支持。XA 协议采用两阶段提交方式来管理分布式事务。XA 接口提供资源管理器与事务管理器之间进行通信的标准接口。

XA 就是 X/OpenDTP 定义的交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来通知数据库事务的开始、结束以及提交、回滚等。XA 接口函数由数据库厂商提供。

X/Open 组织(即现在的 OpenGroup)定义了分布式事务处理模型。X/Open DTP 模型 (1994)包括应用程序(AP)、事务管理器(TM)、资源管理器(RM)、通信资源管理 器(CRM)四部分。一般,常见的事务管理器(TM)是交易中间件,常见的资源管理器(RM) 是数据库,常见的通信资源管理器(CRM)是消息中间件。

  1. 什么是XA一阶段提交?

答:XA一阶段提交是指如果在程序中开启了事务,那么在应用程序发出提交/回滚请求后,数据库执行操作, 而后将成功/失败返回给应用程序,程序继续执行。

一阶段提交协议相对简单。优点也很直观,它不用再与其他的对象交互,节省了判断步骤和时间,所以在性能上是在阶段提交协议中最好的。但缺点也很明显:数据库确认执行事务的时间较长,出问题的可能性就随之增大。如果有多个数据源,一阶段提交协议无法协调他们之间的关系。

  1. 什么是XA二阶段提交?

答:XA二阶段提交是在一阶段协议的基础上,二阶段协议的好处是添加了一个管理者角色。

二阶段协议通过将两层变为三层,增加了中间的管理者角色,从而协调多个数据源之间的关系,二阶段提交协议分为两个阶段。

  1. TCC分布式事务解决方案

    1. 什么是TCC解决方案?

答:TCC 是由支付宝架构师提供的一种柔性解决分布式事务解决方案,主要包括三个步骤

Try:预留业务资源/数据效验

Confirm:确认执行业务操作

Cancel:取消执行业务操作

  1. TCC原理是什么?

事务开始时,业务应用会向事务协调器注册启动事务。之后业务应用会调用所有服务 的 try 接口,完成一阶段准备。之后事务协调器会根据 try 接口返回情况,决定调用 confirm 接口或者 cancel 接口。如果接口调用失败,会进行重试。

微服务倡导服务的轻量化、易部署,而 TCC 方案中很多事务的处理逻辑需要应用自己 编码实现,复杂且开发量大

  1. TC优点是什么?

答:TCC的优点是让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。

  1. TCC的缺点是什么?

答:TCC的缺点:

对应用的侵入性强。业务逻辑的每个分支都需要实现 try、confirm、cancel 三个操作,应用侵入性较强,改造成本高。

实现难度较大。需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。为了满足一致性的要求,confirm 和 cancel 接口必须实现幂等。

  1. 分布式事务中间件解决方案

    1. 什么是分布式事务中间件解决方案?

答:分布式事务中间件其本身并不创建事务,而是基于对本地事务的协调从而达到事务一致性 的效果。典型代表有:阿里的 GTS(https://www.aliyun.com/aliware/txc)、开源应用 LCN。

  1. 什么是LCN框架

    1. 什么事LCN分布式事务处理框架?

LCN 并不生产事务,LCN 只是本地事务的协调工

在设计框架之初的 1.0~2.0 的版本时,框架设计的步骤是如下的,各取其首字母得来 的 LCN 命名。

锁定事务单元(lock)、确认事务模块状态(confirm)、通知事务(notify)

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

集成sleuth_Spring Cloud集成ELK、采用RabbitMQ收集Zipkin数据相关推荐

  1. 集成sleuth_Spring Cloud Sleuth整合zipkin过程解析

    这篇文章主要介绍了Spring Cloud Sleuth整合zipkin过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 SpringClou ...

  2. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的.在学习Spring Clo ...

  3. 关于SpringCloud微服务云架构构建B2B2C电子商务平台之- Spring Cloud集成项目简介(三)...

    2019独角兽企业重金招聘Python工程师标准>>> Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的 ...

  4. (三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介

    2019独角兽企业重金招聘Python工程师标准>>> 电子商务平台源码请加企鹅求求:一零三八七七四六二六.Spring Cloud集成项目有很多,下面我们列举一下和Spring C ...

  5. 一. spring cloud gateway集成 spring cloud stream binder kafka,实现“动态路由“刷新与加载之采坑记录

    一.前言 Spring Cloud Stream是用于构建消息驱动的微服务应用程序的框架. 本文主要介绍如何集成 Spring Cloud Stream,以 Kafka发布订阅模式(topic),实现 ...

  6. java oauth2登录以及权限_Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

    Spring Cloud集成Security OAuth 2.0权限鉴权验证示例 一.背景说明 目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方式进行管理.目前主流 ...

  7. spring cloud 集成 seata 分布式事务

    spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server ...

  8. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介(三)

    点击上面 免费订阅本账号! 本文作者:it菲菲 原文:https://yq.aliyun.com/articles/672242 点击阅读全文前往 Spring Cloud集成项目有很多,下面我们列举 ...

  9. spring cloud集成Eureka

    spring cloud整合Eureka 文章目录 spring cloud整合Eureka Server模块的搭建 pom.xml配置 启动类配置 application.yam配置 查看Eurek ...

最新文章

  1. 华为笔记本matebook13_为什么我不推荐华为Matebook 13给职场新人/小白?
  2. js密码强度正则表达式_这20个正则表达式,能让你少写100行代码
  3. php怎么添加会员卡,怎么在微信公众号中添加一个会员卡领取功能
  4. Object构造函数的方法
  5. pythonargmaxaxis1_详解numpy的argmax的具体使用
  6. 组图:2000悉尼奥运会
  7. Oracle归档日志(翻译)
  8. boolan 设计模式笔记
  9. javascript操作cookie实例
  10. 2022-2027年中国民办高校行业市场调研及未来发展趋势预测报告
  11. python读取文件的时候去重_对python读写文件去重、RE、set的使用详解
  12. linux oa系统搭建,企业Linux系统部署OA系统上线实例
  13. vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园
  14. word删除空白页的方法和技巧详细介绍,提高工作效率!!!!!!!!!!!!
  15. linux磁盘分区题目,Linux练习例题(附答案)
  16. 自定义UDF、UDAF、UDTF函数
  17. 从Dinic到ISAP,从余流推进到最高标号的预留推进HLPP(究极最大流算法)
  18. kubernetes endpoint 代码阅读
  19. 人工智能,离我们还远么?
  20. 给Delphi7升级安装TeeChart pro v7)】

热门文章

  1. RHEL5中mdadm配置raid5磁盘阵列
  2. CryptoJS -- JS加密算法库
  3. 自动/持续部署Docker 的tomcat web项目(一)
  4. 开发工具 codepen codepen vscode
  5. 【Python】 平方根
  6. C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
  7. checksec未完待续~
  8. 用python制作一款录屏小工具
  9. python测试题 --- 列表元素处理
  10. 单日课程超10万节!VIPKID 如何通过实时计算提升上课体验?