欢送拜访我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,波及Java、Docker、Kubernetes、DevOPS等;
对于Jaeger开发系列(java版)
- 本文属于《Jaeger开发系列》,是第一篇,该系列是欣宸原创,旨在通过实战演练与Java程序员一起熟练掌握Jaeger相干的技术,使之在分布式系统中施展巨作用;
- 全系列由浅入深、从基本功能到深度定制都会波及,心愿这个系列能随同您一起成长,为您提供一些及时的参考;
本篇概览
- 作为《Jaeger开发系列》的开篇,咱们先花一分钟理解Jaeger的基本概念,再用三十秒工夫实现部署,而后三十秒体验基本功能,以最轻松的姿态和情绪开启Java程序员的Jaeger之旅;
- 以下是我这里执行本篇实战的环境和软件:
- 电脑:MacBook Pro,macOS Big Sur (11.5.2)---您也能够应用Linux,如Ubuntu或者CentOS
- Docker:20.10.7
- JDK:8u301
- 接下来先从Jaeger的基本概念开始吧;
对于Jaeger
- Jaeger是一套开源的分布式调用链跟踪计划,由Uber创立,起初捐献给CNCF(云原生计算基金会),官网地址:https://www.jaegertracing.io/
- Jaeger的后端、Web端、本地库等都恪守了OpenTracing standard
- 在OpenTracing规范中,一个工作的逻辑单元被称为<font color="blue">span</font>,它有本人的名称、开始工夫、时长、标签等个性,如下图:
- 上面是官网给出的Jaeger架构图(这是没有应用kafka做缓冲的版本),最上层一行表明Jaeger反对的语言类型,可见利用应用了SDK后,业务的span被送到jaeger-agent(通过UDP协定),而后被推送到jaeger-collector,数据被jaeger-collector写入数据库(DB),这样,用户通过浏览器拜访jaeger-query,就能看到具体的调用链追踪后果了,另外,红色虚线是管制信号(例如采样相干的参数):
对于本次体验
- 明天的体验环境由以下内容形成,有个名为<font color="blue">jaeger-service-provider</font>的web利用,其web接口被拜访时,它会操作redis,而后将本次服务的数据上报到Jaeger,而后咱们就能够在Jaeger上看到本次服务的详细情况了:
极速部署jaeger体验环境
- 请确保您的docker-compose性能能够失常应用
- 创立文件<font color="blue">docker-compose.yml</font>,内容如下:
version: '3.0'networks: jaeger-tutorials-net: driver: bridge ipam: config: - subnet: 192.168.1.0/24 gateway: 192.168.1.1services: jaeger: image: jaegertracing/all-in-one:1.26 container_name: jaeger #选择网络 networks: - jaeger-tutorials-net #抉择端口 ports: - 16686:16686/tcp restart: always redis: image: redis:6.2.5 container_name: redis #选择网络 networks: - jaeger-tutorials-net restart: always jaeger-service-provider: image: bolingcavalry/jaeger-service-provider:0.0.1 container_name: jaeger-service-provider #抉择端口 ports: - 8088:8080/tcp #选择网络 networks: - jaeger-tutorials-net restart: always
- 在docker-compose.yml所在目录执行命令<font color="blue">docker-compose up -d</font>,会立刻开始下载三个镜像,而后启动服务:
Creating network "jaeger-service-provider_jaeger-tutorials-net" with driver "bridge"Creating jaeger ... doneCreating jaeger-service-provider ... doneCreating redis ... done
- 至此,jaeger体验环境曾经部署结束,咱们来体验吧
体验jaeger性能
- 用浏览器拜访:<font color="blue">http://localhost:16686/search</font> ,映入眼帘的Jaeger页面如下,相熟golang的同学都分明图标意味着什么(对于欣宸这样的Java铁粉,多想看到那里是一杯热咖啡啊...):
- 从后面的架构图得悉,<font color="blue">jaeger-query</font>就是以后页面的server服务,它本人也通过Jaeger上报了本身被应用的状况,如下图所示,终于见到了trace和span:
- 接下来能够调用咱们部署的服务了,浏览器拜访:http://localhost:8088/hello ,失常状况下收到返回的工夫戳:
- 再刷新Jaeger的页面,如下图所示,咱们的服务和trace名称都赫然在列,看来上报数据失效了,点击下图右上角红框中的圆点:
- 点击那个红点后,进入对应trace的详情页,如下图:
- 至此,咱们实现了Jaeger的入门常识学习和理论体验,如果您对外部的实现细节感兴趣,敬请期待接下来的开发实战揭秘,欣宸原创,必不辜负您
环境信息
- 最初附上《Jaeger开发系列》所需的环境和版本信息,这样的版本搭配能失常运行,供您参考:
- 电脑:MacBook Pro,macOS Big Sur (11.5.2)
- Docker:20.10.7
- JDK:8u301
- Jaeger:1.26
- opentracing-spring-jaeger-cloud-starter:3.3.1
- Spring Boot:2.4.2
- Spring Cloud:2020.0.1
- Redis:6.2.5
你不孤独,欣宸原创一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 数据库+中间件系列
- DevOps系列
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界...
https://github.com/zq2599/blog_demos