63

go-gin-api 路由中间件:Jaeger 链路追踪(六)

 4 years ago
source link: https://www.tuicool.com/articles/qI3queZ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

概述

首先同步下项目概况:

zQJvI3z.png!web

上篇文章分享了,路由中间件 - Jaeger 链路追踪(理论篇)。

这篇文章咱们分享:路由中间件 - Jaeger 链路追踪(实战篇)。

说实话,这篇文章确实让大家久等了,主要是里面有一些技术点都是刚刚研究的,没有存货。

MnQfIju.png!web

先看下咱们要实现的东西:

QfQfAfQ.png!web

API 调用了 5 个服务,其中 4 个 gRPC 服务,1 个 HTTP 服务,服务与服务之间又相互调用:

  • Speak 服务,又调用了 Listen 服务 和 Sing 服务。

  • Read 服务,又调用了 Listen 服务 和 Sing 服务。

  • Write 服务,又调用了 Listen 服务 和 Sing 服务。

咱们要实现的就是查看 API 调用的链路。

关于一些理论的东西,大家可以去看看上篇文章或查阅一些资料,这篇文章就是实现怎么用。

OK,开整。

Jaeger 部署

咱们使用 All in one 的方式,进行本地部署。

下载地址:https://www.jaegertracing.io/download/

我的电脑是 macOS 选择 -> Binaries -> macOS

下载后并解压,会发现以下文件:

  • example-hotrod

  • jaeger-agent

  • jaeger-all-in-one

  • jaeger-collector

  • jaeger-ingester

  • jaeger-query

进入到解压后的目录执行:

目测启动后,访问地址:

http://127.0.0.1:16686/

NFbI3qa.jpg!web

到这,Jaeger 已经部署成功了。

准备测试服务

准备的五个测试服务如下:

听(listen)

  • 端口:9901

  • 通讯:gRPC

说(speak)

  • 端口:9902

  • 通讯:gRPC

读(read)

  • 端口:9903

  • 通讯:gRPC

写(write)

  • 端口:9904

  • 通讯:gRPC

唱(sing)

  • 端口:9905

  • 通讯:HTTP

听、说、读、写、唱,想这几个服务的名称就花了好久 ~

我默认大家都会写 grpc 服务,如果不会写的,可以查看下我原来的文章《Go gRPC Hello World》。

应用示例

实例化 Tracer

HTTP 注入

HTTP 拦截

gRPC 注入

gRPC 拦截

上面是一些核心的代码,涉及到的全部代码我都会上传到 github,供下载。

运行

启动服务

访问路由

http://127.0.0.1:9999/jaeger_test

效果

EfYBz2R.png!web

6fMRZzQ.jpg!web

基本实现了,就到这吧。

API 源码地址

https://github.com/xinliangnote/go-gin-api

Service 源码地址

https://github.com/xinliangnote/go-jaeger-demo

go-gin-api 系列文章

iMrimef.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK