热门标签 | 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 只是本地事务的协调工



推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • 于2012年3月份开始接触OpenStack项目,刚开始之处主要是与同事合作共同部署公司内部的云平台,使得公司内部服务器能更好的得到资源利用。在部署的过程中遇到各种从未遇到过的问题 ... [详细]
  • 1.0为什么要做这个博客站?  在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了。而且下次再点击这个书签时,可能就会忘记当时为什么要添加这个书签了,更有可能书签连接已经无效。这样一来,也就不方便 ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • 社交_java app鸿鹄社交娱乐直播平台
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了javaapp鸿鹄社交娱乐直播平台相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Docker 快速入门指引
    本文最早发表于本人博客:Docker快速入门指引Docker是什么?Docker是Docker.Inc公司开源的一个基于LXC技术之上构建的Container容器引擎,基于Go语言 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
  • asp.net 有什么框架,有什么技术
    原文地址:http:www.cnblogs.comvirusswbarchive201201102318169.html文章写的很好,转载一些到自己的博 ... [详细]
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社区 版权所有