可观测性是很重要的,目前已经有比较不错的OpenTelemetry
标准,各个第三方组件以及厂商都按照这套标准库来暴露和对接观测数据将会更加简便。我们本次聊到的,是链路跟踪,它是可观测性中很重要的一项指标。
GoFrame
框架具有很高的前瞻性,在OpenTelemetry
标准草稿阶段便开始持续关注,并在发布OTEL
标准发布了alpha
版本时,框架便开始支持。目前OTEL
的Golang实现已经稳定。GoFrame
是目前众多"框架"中对OTEL
标准及实现支持得最好的框架。并且可观测性也是框架未来发展的重点特性。
在项目实践中,实现链路跟踪往往会遇到以下常见的痛点。
虽然已经有OTEL
标准,但是第三方组件没有严格执行。例如,在日志和ORM
组件中,没有严格约束传递ctx
上下文变量。
业务项目拼凑使用的第三方组件众多,有的组件没有实现链路跟踪支持,更别提OTEL
标准。例如,命令管理、配置管理、缓存管理、数据校验、定时任务等等常用组件,表象就是没有提供ctx
上下文变量传递。当使用到的组件不支持链路传递时,链路信息便丢失。
业务项目中,链路跟踪没有检测手段,也就是写着写着,链路跟踪不小心就弄丢了。当战略设计在战术实施时遭遇到了猪队友,遇到问题需要定位时就GG。特别是在toB
业务中,遇到工单限时会很抓狂。
由于GoFrame
是一款工程完备的基础框架,提供了项目所需的通用核心基础组件,因此在组件这块可以非常方便地实现标准。
在框架的核心组件中均增加了对ctx
上下文变量的支持,并严格执行OTEL
标准,保障标准的顺利落地。
GoFrame
框架的日志组件也支持并且严格执行OTEL
标准,因此只要使用框架的日志组件,那么也会自动打印链路相关信息。
此外,框架通过开发工具提供工程规范检测功能,可以自动检测出业务项目中的链路丢失问题,进一步推进OTEL
标准落地,保障项目质量。
链路的传递也需要统一组件。目前比较常见的协议是HTTP/GRPC
协议,因此框架也提供了HTTP Client/Server
以及GRPC Client/Server
组件来保障链路的传递。并且为保障易用性,屏蔽复杂的功能细节,这种链路传递是底层隐式实现的,使用者完全无感知的。
方法操作方法操作用于原生SQL执行,相对链式操作更偏底层操作一些,在ORM链式操作执行不了太过于复杂的SQL操作时,...
Do方法我们最常用的是Do方法,执行同步指令,通过向RedisServer发送对应的RedisAPI命令,来使用RedisServer的服...
基本介绍资源管理是指可以将任意文件/目录打包为Golang源码文件,并且编译到可执行文件中,随着可执行文件发布。资源文件在程序...
以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2...
Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」。比如,在一个博客应用中,你可能会创建如下几个视图:博客首...
ASP.NET Calendar SelectWeekText 属性 Calendar 控件定义和用法 SelectWeekText 属性用于规定在日历中为选取整个周而显示的文本...