决战圣地玛丽乔亚Day04

Sleuth分布式请求链路追踪

Sleuth是一个工具,用来跟踪一个用户请求的过程

提供链路追踪、性能分析、数据分析优化链路、可视化

Trace:相同的Trace ID的Span串联形成一个树状结构。TraceID是用来追踪请求路径的唯一标识符。当请求请求到分布式系统的入口端点时,只需要服务跟踪框架为该请求创建一个唯一的跟踪标识

Span:基础工作单元,通俗来讲span就是一次请求信息,也就是调用链路的来源。

Annotation:

cs - Client Sent/Start - 客户端发送一个请求,这个注解描述了这个Span的开始。

sr - Server Received/Start - 服务端获得请求并准备开始处理它,其中(sr – cs) 时间戳便可得到网络传输的时间。

ss - Server Sent/Finish (服务端发送响应)– 该注解表明请求处理的完成(当请求返回客户端), (ss – sr)时间戳就可以得到服务器请求的时间。

cr - Client Received/Finished (客户端接收响应)- 表明此时Span的结束,(cr – cs)时间戳便可以得到整个请求所消耗的时间。

sr - cs = 请求在网络上的耗时
ss - sr = 服务端处理请求的耗时
cr - ss = 回应在网络上的耗时
cr - cs = 一次调用的整体耗时

采样率:

sleuth采样算法的实现是 Reservoir sampling。  采样率代表跟踪请求数量的百分比

`spring.sleuth.sampler.probability=X.Y`(如配置为1.0,则采样率为100%

 

Zipkin:

Zipkin的客户端会在入口为整条链路的唯一traceID,并且为每一次的分布式调用生成一个spanid。传递的过程中,在每次调用边界结束时异步的把当前调用的耗时信息上报给Zipkin Server。

Zip收到这些信息后会生成UI展示出来。

 

 

SpringCloudAlibaba

 

Nacos:动态服务发现、配置管理和服务管理

Dubbo:高性能JAVA RPC框架

Sentinel:流量控制,降级熔断,系统负载保护

RocketMQ:消息队列

Seata:分布式事务解决方案

Arthas:开源的java动态追踪工具,基于字节码增强技术

 

NACOS服务注册中心配置:

yml文件:

spring:
application:
name: springcloudalibaba-provider-payment
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

之前我们都是自己配置一个服务注册的中心,加注解来标识出来,现在我们直接使用nacos作为服务注册中心即可,不需要自己配置了。

 

消费者配置:

yml:

server:
port: 83
spring:
application:
name: springcloudalibaba-consumer-nacos-order
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848

# 消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者), service-url随意指定的key
service-url:
nacos-user-service: http://springcloudalibaba-provider-payment

 

生产者消费者创建完成之后,我们再给他们加上OpenFeign的配置即可和之前用Eureka一样使用。

 

NACOS做配置中心的配置:

写bootstrap.yml配置:

server:
port: 3377

spring:
  application:
    name: springcloud-nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # 服务注册中心
      config:
        server-addr: 127.0.0.1:8848 # 服务配置中心
        file-extension: yaml # 注意:一定是yaml,是全称,不能写成yml

把配置中心config加进去。

 

写application.yml配置:

spring:
  profiles:
    active: dev # 开发环境

 

做为拉取配置文件的yml都需要高优先级。所以一般都用bootstrap.yml来配置。

配置文件的存放,用SpringCloudConfig是存在git上,Nacos就直接存在Nacos上就好。

在Nacos的web界面上按照nacos的规则配置即可。

dataid的完整格式:${prefix}-${spring.profiles.active}.${file-extension}

  • prefix默认为spring.application.name的值;

  • spring.profile.active即为当前环境对应的profile,可以通过配置项spring.profile.active来配置。

  • file-exetension为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。

    所以,完整的写法是这样的:

${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

故,我们的dataid应该是:

springcloud-nacos-config-client-dev.yaml

 

 

 

 

 

 nacos配置还支持动态刷新和历史回滚等功能。

SpringCloud的轮廓大概已经学的差不多了。

服务的注册发现(zookeeper、nacos(服务注册发现+配置管理)、eureka)--负载均衡(Nginx、Ribbon)、RPC框架OpenFeign/Dubbo、熔断限流降级Hystrix/Sentinel、网关GateWay/Zuul、消息队列RocketMq/RabbitMQ/kafka、服务治理与监控(Sleuth、阿里巴巴的arthas)、分布式配置管理SpringCloudConfig

找一个练手项目学习,首先要能运行起来,能写写改改。

posted @   NobodyHero  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示