GoFrame
框架具有很高的前瞻性,在OpenTelemetry
标准草稿阶段便开始持续关注,并在发布OTEL
标准发布了alpha
版本时,框架便开始支持。目前OTEL
的Golang
实现已经稳定。GoFrame
是目前众多”框架”中对标准及实现支持得最好的框架。并且可观测性也是框架未来发展的重点特性。
一、项目实践的痛点
在项目实践中,实现链路跟踪往往会遇到以下常见的痛点。
2、第三方组件杂乱无章
业务项目拼凑使用的第三方组件众多,有的组件没有实现链路跟踪支持,更别提OTEL
标准。例如,命令管理、配置管理、缓存管理、数据校验、定时任务等等常用组件,表象就是没有提供ctx
上下文变量传递。当使用到的组件不支持链路传递时,链路信息便丢失。
业务项目中,链路跟踪没有检测手段,也就是写着写着,链路跟踪不小心就弄丢了。当战略设计在战术实施时遭遇到了猪队友,遇到问题需要定位时就GG。特别是在toB
业务中,遇到工单限时会很抓狂。
二、框架全链路跟踪
1、统一框架
在框架的核心组件中均增加了对上下文变量的支持,并严格执行OTEL
标准,保障标准的顺利落地。
3、日志支持
GoFrame
框架的日志组件也支持并且严格执行OTEL
标准,因此只要使用框架的日志组件,那么也会自动打印链路相关信息。
5、链路传递
链路的传递也需要统一组件。目前比较常见的协议是HTTP/GRPC
协议,因此框架也提供了HTTP Client/Server
以及GRPC Client/Server
组件来保障链路的传递。并且为保障易用性,屏蔽复杂的功能细节,这种链路传递是底层隐式实现的,使用者完全无感知的。