公众号merlinsea
微服务存在的问题:
微服务调用链路复杂,如果出现了问题【不方便快速排查和定位】。分布式应⽤架构虽然满⾜了应⽤横向扩展的需求,但是运维和诊断的过程变得 越来越复杂,例如会遇到接⼝诊断困难、应⽤性能诊断复杂、架构分析复杂等难题,传统的监控⼯具并⽆法满⾜,分布式链路系统由此诞⽣。
核心:
将⼀次请求分布式调⽤,使⽤GPS定位串起来,记录每个调⽤的耗时、性能等⽇志,并通过可视化⼯具展示出来。
Sleuth的介绍:一款专⻔⽤于记录链路数据的开源组件,通过记录每一个分布式调用中每一个微服务的元数据信息【包括摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID】
微服务中引入Sleuth依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
Zipkin介绍:是一款分布式系统的应用性能管理工具可,可以和Sleuth进行整合,Sleuth收集的元数据信息通过http和Zipkin进行交互,Zipkin将这些元数据信息进行可视化展示。Zipkin是一款C/S架构的组件,客户端收集的数据发送到服务端进行展示。
0、下载对应的jar包,启动Zipkin的后台服务(其实就是一个java项目)
java -jar zipkin-server-2.12.9-exec.jar zipkin访问⼊⼝:http://127.0.0.1:9411/zipkin/
1、微服务中引入Zipkin的依赖
dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
2、添加Zipkin的配置文件application.yml
spring: application: name: api-gateway zipkin: base-url: http://127.0.0.1:9411/ #zipkin地址 discovery-client-enabled: false #不用开启服务发现 #指定sleuth的采样百分比,默认是0.1 sleuth: sampler: probability: 1.0 #采样百分比
如果需要将zipkin收集的元数据信息持久化到数据库中,需要去官网找一下我们应该设计什么样格式的数据库【一般第三方中间件官方都会有说明】,然后建好数据库以后启动服务端程序的时候指定数据库即可。
带持久化的启动zipkin
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin_log --MYSQL_USER=root --MYSQL_PASS=mysqlroot
zipkin的访问后台页面
访问localhost:8889/order-server/api/v1/video_order/save 接口的调用链路如下:
总结:
中间件的架构图:客户端项目-后台服务项目-前端界面UI
vip课程是指同学们加入我们的vip学习群,vip群里面的小伙们可以永久参加所有的直播算法刷题课程,我每天直播的时间是早上8:30-9:30,通过腾讯会议在线讲解算法刷题,语言包括c++,java和golang版本,只要加入了vip群,除了每天的直播刷题外,前45位加入的同学,我会额外赠送我所有的学习实战资料,包括docker、git、java io、leetcode算法、java源码分析、jdk新特性、kafka、linux、mybatis、mybatis plus、mysql、mysql刷题、netty、nginx、python、rabbitmq、redis、sharding jdbc、spring、springboot、springcloud、并发编程、html+css、微信支付实战所有内容的学习笔记,总共800+张的文档资料。
vip刷题班课程的价格:800元/人 ,联系我即可报名参加。