go 链路追踪_Golang XORM实现分布式链路追踪(源码分析,分布式CRUD必学)

本文介绍了如何使用XORM和Opentracing在Golang中实现分布式链路追踪,以解决并发情况下丢失span的问题。通过Docker启动Jaeger服务,安装必要的库,定义并挂载Hook钩子,实现CRUD操作的分布式追踪。
摘要由CSDN通过智能技术生成

使用XORM和Opentracing,让你彻彻底底摆脱繁琐的CRUD的阴影,将工作重心转移至业务逻辑

使用XORM和Opentracing,让你彻彻底底摆脱繁琐的CRUD的阴影,将工作重心转移至业务逻辑

系统环境

go version go1.14.3 windows/amd64

xorm.io/xorm 1.0.3

一、 ⚠️提醒

XORM版本1.0.2及以上(支持以Hook钩子函数方式侵入XORM执行过程)

一定要看Q&A,看Q&A,看Q&A!

在之前的 Golang实战 XORM搭配OpenTracing+Jaeger链路监控让SQL执行一览无遗 文章中使用的侵入日志模块的方式是1.0.2版本以下侵入的方式,但是这种方式存在并发问题,会丢失span,如果升级到了1.0.2版本或以上就应该使用Hook钩子的方式侵入

二、过程

1. 使用Docker启动Opentracing + jaeger服务

使用的镜像:jaegertracing/all-in-one:1.18

Docker命令

docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 14250:14250 -p 9411:9411 jaegertracing/all-in-one:1.18

浏览器访问localhost:16686,可以看到JaegerUI界面,如下所示:

至此,以内存作为数据寄存方式的OpenTracing+Jaeger服务成功运行。

这里不详细讲解 Opentracing 的使用,有兴趣的同学可以查看官方技术文档

同时这里搭配的 jaeger 进行使用,方便我们调试和线上小规模部署

2. 安装Xorm、OpenTracing和Jaeger

Xorm - 需要 1.0.2 版本及以上才能支持Hook钩子函数

go get xorm.io/xorm

OpenTracing和Jaeger - 只需要安装Jaeger-Client就会依赖Opentracing

go get github.com/uber/jaeger-client-go

3. 初始化Opentracing –> 通常由服务统一初始化

main.go

package main

func initJaeger() (closer io.Closer, err error) {

// 根据配置初始化Tracer 返回Closer

tracer, closer, err := (&config.Configuration{

ServiceName: "xormWithTracing",

Disabled: false,

Sampler: &config.SamplerConfig{

Type: jaeger.SamplerTypeConst,

// param的值在0到1之间,设置为1则将所有的Operation输出到Reporter

Param: 1,

},

Reporter: &config.ReporterConfi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值