决战圣地玛丽乔亚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
找一个练手项目学习,首先要能运行起来,能写写改改。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!