GoFrame框架具有很高的前瞻性,在OpenTelemetry标准草稿阶段便开始持续关注,并在发布OTEL标准发布了alpha版本时,框架便开始支持。目前OTELGolang实现已经稳定。GoFrame是目前众多”框架”中对标准及实现支持得最好的框架。并且可观测性也是框架未来发展的重点特性。

一、项目实践的痛点

在项目实践中,实现链路跟踪往往会遇到以下常见的痛点。

2、第三方组件杂乱无章

业务项目拼凑使用的第三方组件众多,有的组件没有实现链路跟踪支持,更别提OTEL标准。例如,命令管理、配置管理、缓存管理、数据校验、定时任务等等常用组件,表象就是没有提供ctx上下文变量传递。当使用到的组件不支持链路传递时,链路信息便丢失。

业务项目中,链路跟踪没有检测手段,也就是写着写着,链路跟踪不小心就弄丢了。当战略设计在战术实施时遭遇到了猪队友,遇到问题需要定位时就GG。特别是在toB业务中,遇到工单限时会很抓狂。

二、框架全链路跟踪

1、统一框架

在框架的核心组件中均增加了对上下文变量的支持,并严格执行OTEL标准,保障标准的顺利落地。

3、日志支持

GoFrame框架的日志组件也支持并且严格执行OTEL标准,因此只要使用框架的日志组件,那么也会自动打印链路相关信息。

5、链路传递

链路的传递也需要统一组件。目前比较常见的协议是HTTP/GRPC协议,因此框架也提供了HTTP Client/Server以及GRPC Client/Server组件来保障链路的传递。并且为保障易用性,屏蔽复杂的功能细节,这种链路传递是底层隐式实现的,使用者完全无感知的。