分布式链路监控与追踪系统Zipkin

Score Matching(得分匹配) Score Matching(得分匹配)是一种统计学习方法,用于估计概率密度函数的梯度(即得分函数),而无需知道密度函数的归一化常数。这种方法由Hyvärinen在2005年提出,主要用于无监督学习,特别是在密度估计和生成模型中。 阅读详情

分布式链路监控与追踪系统Zipkin

1.分布式链路监控与追踪产生背景
2.SpringCloud Sleuth + Zipkin
3.分布式服务追踪实现原理
4.搭建Zipkin服务追踪系统
5.搭建Zipkin集成RabbitMQ异步传输
6.SpringCloud2.x新知识介绍

 

分布式链路监控与追踪产生背景

在微服务系统中,随着业务的发展,系统会变得越来越大,那么各个服务之间的调用关系也就变得越来越复杂。一个 HTTP 请求会调用多个不同的微服务来处理返回最后的结果,在这个调用过程中,可能会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth 提供了分布式服务链路监控的解决方案。下面介绍 Spring Cloud Sleuth 整合 Zipkin 的解决方案。

 

Zipkin框架介绍
 

Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现的。我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时发现系统中出现的延迟过高问题。除了面向开发的 API 接口之外,它还提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如可以查询某段时间内各用户请求的处理时间等。

 

Zipkin 和 Config 结构类似,分为服务端 Server,客户端 Client,客户端就是各个微服务应用。

 

微服务中,如果服务与服务之间的依赖关系非常复杂,如果某个服务出现一些问题,很难知道原因。

 

 

 Spring Cloud提供ZipKin组件

 

SpringCloud Zipkin 与Sleuth
Zipkin 是一个开放源代码分布式的跟踪系统,由Twitter公司开源,它致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。
每个服务向zipkin报告计时数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。
zipkin会根据调用关系通过Zipkin UI生成依赖关系图。

Spring Cloud Sleuth为服务之间调用提供链路追踪。通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长。从而让我们可以很方便的理清各微服务间的调用关系。此外Sleuth可以帮助我们:
耗时分析: 通过Sleuth可以很方便的了解到每个采样请求的耗时,从而分析出哪些服务调用比较耗时;
可视化错误: 对于程序未捕捉的异常,可以通过集成Zipkin服务界面上看到;
链路优化: 对于调用比较频繁的服务,可以针对这些服务实施一些优化措施。
Spring Cloud Sleuth可以结合Zipkin,将信息发送到Zipkin,利用Zipkin的存储来存储信息,利用Zipkin Ui来展示数据。

  

 

搭建Zipkin服务追踪系统

      

在 Spring Boot 2.0 版本之后,官方已不推荐自己搭建定制了,而是直接提供了编译好的 jar 包。详情可以查看官网:https://zipkin.io/pages/quickstart.html
注意:zipkin官网已经提供定制了,使用官方jar运行即可。

启动方式:
默认端口号启动zipkin服务
java –jar zipkin.jar 默认端口号; 9411
访问地址:http://192.168.18.220:9411

指定端口号启动8080启动zipkin服务
java -jar zipkin.jar --server.port=8080
访问地址:http://192.168.18.220:8080

指定访问rabbitmq 启动
java -jar zipkin.jar --zipkin.collector.rabbitmq.addresses=127.0.0.1

 

访问:http://192.168.8.159:9411/zipkin/

 

 默认的值是在内存中  需要设置持久化到内存中哦

 

 案例展示  order  ---> member ---> msg

在Order服务、Member、Msg服务里面引入:

         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

pom:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!-- 管理依赖 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合eureka客户端 -->
        <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-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

    </dependencies>
    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

yml配置      收集方式有抽样收集 有全部收集     收集到平台的ip+端口号

 

 

###会员项目的端口号
server:
  port: 8000
###服务别名----服务注册到注册中心名称 
spring:
  application:
    name: app-toov5-member
  zipkin: 
    base-url: http://127.0.0.1:9411/
  ###全部采集  
  sleuth:
    sampler:
      probability: 1.0

eureka:
  client:
    service-url:
    ##### 当前会员服务注册到eureka服务地址
      defaultZone: http://localhost:8100/eureka
    ### 需要将我的服务注册到eureka上
    register-with-eureka: true
    ####需要检索服务
    fetch-registry: true

 

 

底层原理:

   

服务跟踪原理
为了实现请求跟踪,当请求发送到分布式系统的入口端点时, 只需要服务跟踪框架为该请求创建一个唯的跟踪标识, 同时在分布式系统内部流转的时候,框架始终保持传递该唯一标识, 直到返回给请求方为止,这个唯一标识就是前 文中提到的Trace ID。通过Trace ID的记录,我们就能将所有请求过程的日志关联起来。
为了统计各处理单元的时间延迟,当请求到达各个服务组件时,或是处理逻辑到达某个状态时,也通过一个唯一 标识来标记它的开始、 具体过程以及结束,该标识就是前文中提到的Span ID。对于每个Span来说,它必须有开始和结束两个节点,通过记录开始Span和结束Span的时间戳,就能统计出该Span的时间延迟,除了时间戳记录之外,它还可以包含一些其他元数据, 比如事件名称、请求信息等
SpanId记录每一次请求, TraceID记录整个调用链全局ID

 

    TraceId 和 SpanId 在微服务中传递追踪

    TraceId记录每一次请求,耗时时间、接口调用关系

    TraceId和SpanId在微服务中传递追踪

  

    在微服务中,使用请求头传递TraceId和SpanId,一个TraceId由多个SpanId组合起来。获取到整个微服务调用依赖关系

    

下一级的parentId就是上一级的spanId 形成一个链

每次请求生成一个新的spanId

   

在微服务中,使用请求头传递TraceId和SpanId,一个TraceId由多个SpanId组合起来,获取到整个微服务调用依赖关系。 

 

 

 

案例如下:

 Eureka略

 

 Order:

   controller:

   

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class OrderControler {

    // RestTemplate 是有SpringBoot Web组件提供 默认整合ribbon负载均衡器
    // rest方式底层是采用httpclient技术
    @Autowired
    private RestTemplate restTemplate;

    /**
     * 在SpringCloud 中有两种方式调用 rest、fegin(SpringCloud)
     * 
     * @return
     */

    // 订单服务调用会员服务
    @RequestMapping("/getOrder")
    public String getOrder() {
        // 有两种方式,一种是采用服务别名方式调用,另一种是直接调用 使用别名去注册中心上获取对应的服务调用地址
        String url = "http://app-itmayiedu-member/getMember";
        String result = restTemplate.getForObject(url, String.class);
        System.out.println("订单服务调用会员服务result:" + result);
        return result;
    }

    @RequestMapping("/orderToMemberMsg")
    public String orderToMemberMsg(HttpServletRequest request) {
        System.out.println(
                "TraceId:" + request.getHeader("X-B3-TraceId") + ",spanid:" + request.getHeader("X-B3-SpanId"));
        // 有两种方式,一种是采用服务别名方式调用,另一种是直接调用 使用别名去注册中心上获取对应的服务调用地址
        String url = "http://app-itmayiedu-member/memberAndMsg";
        String result = restTemplate.getForObject(url, String.class);
        System.out.println("订单服务调用会员服务result:" + result);
        return result;
    }

}

yml:

  

###订单服务的端口号
server:
  port: 8001
###服务别名----服务注册到注册中心名称 
spring:
  application:
    name: app-itmayiedu-order
  zipkin: 
    base-url: http://127.0.0.1:9411/
  ###全部采集  
  sleuth:
    sampler:
      probability: 1.0
eureka:
  client:
    service-url:
    ##### 当前会员服务注册到eureka服务地址
      defaultZone: http://localhost:8100/eureka
    ### 需要将我的服务注册到eureka上
    register-with-eureka: true
    ####需要检索服务
    fetch-registry: true

 

启动类:

  

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class AppOrder {
    public static void main(String[] args) {
        SpringApplication.run(AppOrder.class, args);

        // 如果使用rest方式以别名方式进行调用依赖ribbon负载均衡器 @LoadBalanced
        // @LoadBalanced就能让这个RestTemplate在请求时拥有客户端负载均衡的能力
    }

    // 解决RestTemplate 找不到原因 应该把restTemplate注册SpringBoot容器中 @bean
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

 

Member:

  

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;


@RestController
public class MemberApiController {
    @Value("${server.port}")
    private String serverPort;
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/getMember")
    public String getMember(HttpServletRequest request) {

        return "this is member,我是会员服务,springcloud2.0版本!端口号:" + serverPort
                + request.getHeader("X-B3-TraceId") + ",spanid:" + request.getHeader("X-B3-SpanId");

    }

    @RequestMapping("/memberAndMsg")
    public String sndMsg() {
        String url = "http://app-itmayiedu-msg/sndMsg";
        String result = restTemplate.getForObject(url, String.class);
        System.out.println("会员服务调用消息服务result:" + result);
        return result;
    }

}

yml:

 

###会员项目的端口号
server:
  port: 8000
###服务别名----服务注册到注册中心名称 
spring:
  application:
    name: app-toov5-member
  zipkin: 
    base-url: http://127.0.0.1:9411/
  ###全部采集  
  sleuth:
    sampler:
      probability: 1.0

eureka:
  client:
    service-url:
    ##### 当前会员服务注册到eureka服务地址
      defaultZone: http://localhost:8100/eureka
    ### 需要将我的服务注册到eureka上
    register-with-eureka: true
    ####需要检索服务
    fetch-registry: true

 

启动类:

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
public class AppMember {

    // @EnableEurekaClient 将当前服务注册到eureka上
    public static void main(String[] args) {
        SpringApplication.run(AppMember.class, args);
    }

    // 解决RestTemplate 找不到原因 应该把restTemplate注册SpringBoot容器中 @bean
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

 

Msg

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class MsgController {

    @RequestMapping("/sndMsg")
    public String sndMsg() {
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
            // TODO: handle exception
        }
        return "我是消息服务平台";
    }

    public static void main(String[] args) {
        SpringApplication.run(MsgController.class, args);
    }

}

启动类:

 

###订单服务的端口号
server:
  port: 8003
###服务别名----服务注册到注册中心名称 
spring:
  application:
    name: app-toov5-msg
  zipkin: 
    base-url: http://127.0.0.1:9411/
  ###全部采集  
  sleuth:
    sampler:
      probability: 1.0
eureka:
  client:
    service-url:
    ##### 当前会员服务注册到eureka服务地址
      defaultZone: http://localhost:8100/eureka
    ### 需要将我的服务注册到eureka上
    register-with-eureka: true
    ####需要检索服务
    fetch-registry: true

 

 

 

 

 

 Eureka:

 

 访问: http://127.0.0.1:8001/orderToMemberMsg

 

点击上面的实际三5.024s

  

 

uniapp [安卓苹果App端] - 实现获取手机日历读写权限+调用本机日历数据及操作功能+日历中插入事项事件提醒,检测权限手机日历权限是否开启并引导用户同意授权,uniApp app端开启日历授权 uni-app,权限,手机日历权限,安卓Android,苹果ios,uniapp安卓android获取本机日历读写权限使用,uni-app获取日历权限并实现插入事项事件功能 uniapp苹果IOS系统不支持怎么办,判断权限,权限被拒绝了怎么办,获取日历权限报错,读取日历数据农历阴历并操作插入移除,给用户手机日历中放入一条提示,UniApp调用日历进行读写,打包上架后如何获取,安卓ios权限检测,安卓和ios权限获取,uniapp的APP端日历读写权限与使用示例代码,如何开启日历权限,日历的新增事项和删除,判 阅读详情

相关推荐

Docker一键部署NextCloud+OnlyOffice:打造企业级私有云办公环境(含HTTPS配置)

本文详细介绍了如何使用Docker Compose一键部署NextCloud与OnlyOffice,构建安全、高效的企业级私有云办公平台。内容涵盖从架构设计、Docker编排配置、HTTPS证书自动化管理,到系统初始化、性能优化及高级功能扩展的全栈实战指南,帮助企业实现数据自主可控与高效的在线文档编辑协作。

Apple的专栏 1240

Zipkin安装与初识

Zipkin Zipkin是一个分布式跟踪系统。它有助于收集用于解决微服务架构中的延迟问题所需的时序数据。它管理数据的收集和查找。Zipkin的设计是基于Google Dapper paper。 应用程序被用来向Zipkin报告定时数据。ZIPKIN UI还提供了一个依赖关系图,显示了多少跟踪请求遍历每个应用程序。如果您正在排除延迟问题或错误,可以根据应用程序、跟踪长度、注...

小小码农 9456

科研党必备:用Python+Excel批量下载文献的保姆级教程(附常见错误解决)

本文提供了一套利用Python和Excel实现外文文献批量下载的自动化解决方案。教程详细介绍了如何从数据库导出并清洗DOI信息,编写健壮的Python脚本进行批量下载,并包含错误处理与进阶优化技巧,旨在帮助科研人员将重复性劳动自动化,大幅提升文献收集效率。

weixin_29050513的博客 307

zipkin 简单使用

简介 zipkin 官网:https://zipkin.io/ Zipkin 是一个分布式链路追踪系统。它有助于收集解决服务架构中的延迟问题所需的时间数据 1、Sleuth 和 Zipkin 异同 Sleuth 和 Zipkin 都是用来做分布式链路跟踪的,Zipkin 包含了 sleuth (指的 spring-cloud-starter-zipkin 包含 spring-cloud-starter-sleuth),Zipkin 分为服务端和客户端,服务端提供了一个 UI 监控界面,服务端指的每个服务 2

不懂一休 4万+

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 442

GAN实战:用Python和TensorFlow打造你的第一个生成对抗网络(附完整代码)

本文是一份详细的GAN实战指南,指导读者使用Python和TensorFlow框架从零开始构建并训练一个生成对抗网络。文章涵盖了环境搭建、MNIST数据预处理、生成器与判别器模型构建、对抗性损失函数定义、训练循环编写以及关键的调试技巧,旨在帮助开发者通过动手实践深入理解GAN的核心原理与实现过程。

php55的博客 480

2. Zipkin安装和启动

有三种安装方法:Zipkin的使用比较简单,官网有说明几种方式:1、容器项目能够建立docker镜像,提供脚本和来启动预构建的图像。最快的开始是直接运行最新镜像:2、下载jar如果你有java 8或更高版本,上手最快的方法是把新版本作为一个独立的可执行jar,Zipkin使用springboot来构建的:3、下载源代码运行Zipkin可以从源运行,如果你正在开发新的功能。要实现这一点,需要获取Zipkin的源代码并构建它。cd zipkin启动 查看运行效果。

wyd_88l的博客 2652

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 773

Zipkin服务端搭建使用教程

(1)Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现。可以用来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高的问题,找出系统性能瓶颈的根源。(2)除了面向开发的 API 接口之外,它也提供了方便的 UI 组件来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。

优秀技术文章收录 3870

光通量与辐射通量之间的换算

由理论和实验可知存在两种定义: 1W1W1W(瓦特)的频率为540×1012Hz540\times10^{12}Hz540×1012Hz(赫兹)的单色辐射的辐射通量等于683lm(流明)683lm(流明)683lm(流明).。 1lm1lm1lm的频率为540×1012Hz540\times10^{12}Hz540×1012Hz的单色通量等于1683=0.001464W\frac{1}{683}=0.001464W6831​=0.001464W。 从上述定义中我们可以得到什么呢?我们知道光速: c=3×

u011699626的博客 3273

YOLOv11改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 1497

链路追踪Zipkin的使用

使用docker持久化部署Zipkin

zy_javaAndweb的博客 1005

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 178

Delphi 文件操作(3)

9.2  文件存取方法与文件管理组件   9.2.1  存取文件的类方法 Delphi在许多需要与文件打交道的类中定义了文件存取方法,使用这些方法可以非常方便地将类中的数据保存到文件中,或从文件中读取所需的数据。   1.LoadFromFile和SaveToFile方法 LoadFromFile( )和SaveToFile( )是直接存取文件的类方法。声明如下: p

流年~~ 7848

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Builder的一些编码杂记

1.关于定时器TTimer 首先定时器的属性Enable有true和false,默认的是true,代表只要你不主动设置为false,程序一启动,定时器就自动执行 而且一般来说,如果不手动的去关掉定时器,它会以设置好的时间间隔,在整个程序期间保持运作。 时间间隔Interval ,1000代表1秒 2.关于类似opendialog的系统函数 由于函数的调用会有返...

Tiaobaobao的博客 319

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

delphi 文件存取方法与文件管理组件

9.2文件存取方法与文件管理组件 9.2.1存取文件的类方法 Delphi在许多需要与文件打交道的类中定义了文件存取方法,使用这些方法可以非常方便地将类中的数据保存到文件中,或从文件中读取所需的数据。 1.LoadFromFile和SaveToFile方法 LoadFromFile( )和SaveToFile( )是直接存取文件的类方法。声明如下: procedure...

weixin_30920091的博客 389

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

若对File与Directory类陌生-我们一起学习 Winform界面(技术改变世界-cnblog)

闲话不说了,要想学好 c# 文件和流是肯定要熟悉甚至精通的,第一天细读 File类与Directory,利用winform界面,和初学者一起交流心得。 修为浅薄,如有错误,望指针,开源免费分享。 需求: 对于新手,我希望你先看下我的需求,然后自己考虑下,如何编写代码,然后再看我代码。 1.注意 我右边使用的是ListBox 左边是textBox 要点:锻炼winform...

157

初始Delphi的一些基本组件

窗体: ShowModal 与show的区别: Show可以在主窗口中继续接收消息执行任务,而showModal主窗口不能在继续执行任务 TRadioGroup 单选组框 Items添加单选项, ItemIndex 设置默认勾选项 TPopUpMenu:右击窗体空白处 弹出菜单(更改主窗体的PopUpMenu属性为当前的POPMenu事件) fream(框架):

qq_25235869的博客 991

delphi编程妙招集合

下载网址: http://www.pcbookcn.com/down.asp?id=928&no=1 有详细的文字说明和DELPHI源代码,拷贝即用! 内容: 控件 Label的分行显示 Tag属性的妙用 调用API确定MEMO控件中的当前行和列 给ListBox、ComboBxox添加图片 给ListBox添加水平滚动条 Delphi中动态定制菜单 用Image...

weixin_30904593的博客 248

如何使用Zipkin进行分布式追踪?

Zipkin 是一个分布式追踪系统,它帮助收集延迟数据和服务之间的调用信息,以便更好地理解服务间的交互。通过 Zipkin,你可以追踪请求在微服务架构中的流动路径,这对于调试性能问题和了解系统的整体行为非常有用。

Pmyx_wyh的博客 745

SpringCloud使用Zipkin

下载地址:https://github.com/openzipkin/zipkin。

qq_22858799的博客 2287

Zipkin入门

Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。

jc_hook的博客 831

如何在Java中使用Zipkin:全面指南

在现代微服务架构中,分布式跟踪是至关重要的。Zipkin作为一个开源的分布式跟踪系统,可以帮助我们收集、存储和分析跨越多个服务的请求,从而发现并解决性能瓶颈和慢请求。接下来,我们将深入探讨在Java中集成Zipkin的具体步骤和注意事项。Zipkin是由Twitter开发的开源项目,灵感来源于Google Dapper的论文。它能够跟踪微服务中的请求路径,并提供详细的请求时间和依赖关系图,帮助开发者更好地理解和优化应用程序的性能。

weixin_46372265的博客 1178

链路追踪神器zipkin安装详细教程教程

Zipkin是一款开源分布式追踪系统,用于分析微服务架构中的请求流转和性能指标。文章介绍了其核心功能(故障诊断、依赖分析等)及与Jaeger等竞品的差异。提供了两种安装方式:Docker快速部署(支持内存和MySQL存储)和普通安装(需JDK环境,推荐使用nohup或supervisord守护进程)。安装完成后通过9411端口访问控制台,客户端接入参考作者另一篇SpringCloud整合指南。该系统可视化服务调用关系,帮助优化分布式系统性能。

技术Z先生的博客 2932

Zipkin、Sleuth链路追踪怎么使用?

怎么看我们哪些微服务运行慢了,或者出问题呢?sentinel(实时监控)、nacos,当然更详细的还是要用zipkin。Zipkin则是一种分布式追踪系统,可以帮助定位问题和优化微服务的性能。能看到耗时、开始结束时间、服务调用的全部链路。

赵达宇的博客 446

微服务: sleuth和zipkin的用处与zipkin安装使用(下)

docker安装zipkin zipkin的配置与使用 制作镜像 sleuth和zipkin是两个分布式跟踪工具,在分布式系统中起到了跟踪、监控和调试的作用。 本文使用sleuth 发出消息给mq 然后zipkin接收并分析数据 一般都会抽样检查 10%进入zipkin进行分析

pingzhuyan的博客 1206
上一篇: Sharding-Jdbc实现分表分库
下一篇: MySQL的索引实现原理
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值