热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zipkin使用_尚学堂0134之elk的学习及zipkin的数据跟踪

对应作业安装LogstashLogstash的作用是什么?ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#

对应作业

  1. 安装Logstash
    1. Logstash的作用是什么?

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

  1. 安装Kibana
    1. Kibana的作用是什么

图形化界面 ,方便我们管理应用程序

  1. Spring_Cloud与ELK的集成-创建项目
    1. 创建Provider接口。
    2. 创建Provider服务。
    3. 修改POM文件,添加服务相关坐标。
    4. 修改POM文件,添加sleuth启动器坐标、添加logstash坐标。
    5. 修改配置文件,添加服务相关配置。
    6. 创建Consumer服务。
    7. 修改POM文件,添加服务相关坐标。
    8. 修改POM文件,添加sleuth启动器坐标、添加logstash坐标。
    9. 修改配置文件,添加服务相关配置。

net.logstash.logback

logstash-logback-encoder

5.0

  1. Spring_Cloud与ELK的集成-操作ELK
    1. Kibana操作界面中的Discover的作用是什么?
    2. Kibana操作界面中的Visualize的作用是什么?
    3. Kibana操作界面中的Timelion的作用是什么?
    4. Kibana操作界面中的DevTools的作用是什么?
    5. Kibana操作界面中的Management的作用是什么?

Discover 在这个界面可以查询日志数据

Visualize: 视图展示,支持许多风格。

Dashboard:图表展示,一个仪表板显示 Kibana 保存的一系列可视化

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

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

管理中的应用是在你执行你的运行时配置 kibana,包括初始设置和指标进行配置模式, 高级设置,调整自己的行为和 Kibana,各种“对象”,你可以查看保存在整个 Kibana 的内容 如发现页,可视化和仪表板。

  1. 什么是Zipkin
    1. 什么是Zipkin?
    2. Zipkin和ELK有什么区别?
cf9aff5acb5054fd0effb872dac90d32.png
  1. 创建Zipkin服务端
    1. @EnableZipkinServer注解的作用是什么?

开启ipKinServer端服务

  1. Spring Cloud与Zipkin的集成
    1. 创建Provider服务接口项目。
    2. 创建Provider服务。
    3. 修改POM文件,添加相关坐标。
    4. 修改POM文件,添加Zipkin坐标。
    5. 修改配置文件,添加服务相关配置。
    6. 修改配置文件,添加Zipkin URL配置。
    7. 创建Consumer服务。
    8. 修改POM文件,添加相关坐标。
    9. 修改POM文件,添加Zipkin坐标。
    10. 修改配置文件,添加服务相关配置。
    11. 修改配置文件,添加Zipkin URL配置。

org.springframework.cloud

spring-cloud-starter-zipkin

spring:

zipkin:

base-url: http://127.0.0.1:9411

enabled: true

sleuth:

web:

client:

enabled: true

sampler:

probability: 1.0 #zipkin采集率 0.1表示 10%采集率

  1. Zipkin的原理剖析
    1. Zipkin有哪些时间类型?每种事件类型表示什么含义?
    2. Zipkin的执行原理是什么?

cs: client send

cr: client receive

sr: server receive

ss: server send

ba4ca1d9e9a7a4cf46d84c4dbbb6dd74.png
  1. 采用RabbitMQ收集Zipkin的跟踪数据-创建服务端
    1. @EnableZipkinStreamServer注解的作用是什么?

开启运行RabbitMQ的消息驱动Stream

  1. 采用RabbitMQ收集Zipkin的跟踪数据-创建客户端
    1. 创建Provider服务。
    2. 需改POM文件,添加服务相关坐标。
    3. 修改POM文件,添加Zipkin Stream、Binder Rabbit坐标。
    4. 修改配置文件,添加服务相关配置。
    5. 修改配置文件,添加RabbitMQ连接配置。
    6. 创建Consumer服务。
    7. 需改POM文件,添加服务相关坐标。
    8. 修改POM文件,添加Zipkin Stream、Binder Rabbit坐标。
    9. 修改配置文件,添加服务相关配置。
    10. 修改配置文件,添加RabbitMQ连接配置。
    11. 访问Zipkin服务端查看结果。
  1. 跟踪数据持久化到MySQL
    1. 创建Zipkin服务端。
    2. 修改POM文件,添加服务相关坐标。
    3. 修改POM文件,添加MySQL数据库驱动坐标,添加jdbc启动器。
    4. 修改配置文件,添加服务相关配置
    5. 修改配置文件,添加Zipkin储存类型。
    6. 执行MySQL脚本。
    7. 访问Zipkin服务端,查看MySQL数据库中数据。

CREATE TABLE IF NOT EXISTS zipkin_spans (

`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this means the trace uses 128 bit traceIds instead of 64 bit',

`trace_id` BIGINT NOT NULL,

`id` BIGINT NOT NULL,

`name` VARCHAR(255) NOT NULL,

`parent_id` BIGINT,

`debug` BIT(1),

`start_ts` BIGINT COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement TTL',

`duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration and maxDuration query'

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_spans ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `id`) COMMENT 'ignore insert on duplicate';

ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`, `id`) COMMENT 'for joining with zipkin_annotations';

ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`) COMMENT 'for getTracesByIds';

ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT 'for getTraces and getSpanNames';

ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT 'for getTraces ordering and range';

CREATE TABLE IF NOT EXISTS zipkin_annotations (

`trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this means the trace uses 128 bit traceIds instead of 64 bit',

`trace_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',

`span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',

`a_key` VARCHAR(255) NOT NULL COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',

`a_value` BLOB COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',

`a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',

`a_timestamp` BIGINT COMMENT 'Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp',

`endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is null',

`endpoint_ipv6` BINARY(16) COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',

`endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint is null',

`endpoint_service_name` VARCHAR(255) COMMENT 'Null when Binary/Annotation.endpoint is null'

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT 'Ignore insert on duplicate';

ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`, `span_id`) COMMENT 'for joining with zipkin_spans';

ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`) COMMENT 'for getTraces/ByIds';

ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames';

ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces';

ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces';

ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`, `a_key`) COMMENT 'for dependencies job';

CREATE TABLE IF NOT EXISTS zipkin_dependencies (

`day` DATE NOT NULL,

`parent` VARCHAR(255) NOT NULL,

`child` VARCHAR(255) NOT NULL,

`call_count` BIGINT,

`error_count` BIGINT

) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_dependencies ADD UNIQUE KEY(`day`, `parent`, `child`);

mysql:

jdbc-url: ${MYSQL_JDBC_URL:}

host: ${MYSQL_HOST:localhost}

port: ${MYSQL_TCP_PORT:3306}

username: ${MYSQL_USER:}

password: ${MYSQL_PASS:}

db: ${MYSQL_DB:zipkin}

max-active: ${MYSQL_MAX_CONNECTIONS:10}

use-ssl: ${MYSQL_USE_SSL:false}

  1. 什么是分布式事务
    1. 什么是分布式事务?

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

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

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

一阶段提交协议相对简单。优点也很直观,它不用再与其他的对象交互,节省了判断步骤和时间,所以在性能上是在阶段提交协议中最好的。

但缺点也很明显:数据库确认执行事务的时间较长,出问题的可能性就随之增大。如果有多个数据源,一阶段提交协议无法协调他们之间的关系。

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

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

  1. TCC分布式事务解决方案
    1. 什么是TCC解决方案?
    2. TCC原理是什么?
    3. TC优点是什么?
    4. TCC的缺点是什么?

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

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

Confirm:确认执行业务操作

Cancel:取消执行业务操作

TCC 方案在电商、金融领域落地较多。TCC 方案其实是两阶段提交的一种改进。

其将整个业务逻辑的每个分支显式的分成了Try、Confirm、Cancel 三个操作.

Try 部分完成业务的准备工作,confirm 部分完成业务的提交,cancel 部分完成事务的回滚。

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

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

应用侵入性较强,改造成本高。实现难度较大。

需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。

为了满足一致性的要求,confirm 和cancel 接口必须实现幂等。

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

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

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

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

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

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



推荐阅读
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • (1)XML预处理读取test.xml并修改url节点下的localhost信息,以保证预览和下载用户所需正确资源。过程如下: ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • datetime 索引_【免费毕设】ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现(源代码+论文)...
    点击上方“蓝字”关注我们目录系统设计4.1搜索引擎模型模型包括爬虫、索引生成、查询以及系统配置部分。爬虫包括:网页抓取模块、网页减肥模块、爬虫维持模块。索引生成包括& ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
author-avatar
贞娜gina88
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有