大家好, GoFrame
框架今天发布了 v2.7.0
正式版本啦! 👏👏👏👏👏👏👏👏👏
本次版本最大的看点是提供了 metric
监控组件,主库提供了接口化的 metric
设计,社区组件提供了基于 OpenTelemetry
的 metric
接口实现。该特性在默认情况下是关闭的,只有在引入具体的接口实现或者社区实现时才会默认启用。当前版本同时提供了 HTTP Client&Server
的监控指标实现,其他组件的监控指标将在后续版本中陆续提供。详情请参考文档: 服务监控告警
同时,在本次版本中实现了对 dm/mssql/oracle/pgsql/sqlite
数据库的 Save
操作支持,感谢社区小伙伴 https://github.com/oldme-git 💖。
此外,值得一提的是,在本次版本中,我们对 gcron
定时任务组件对秒级字段增加了忽略符号 #
的特性,用于将 6
段式的 cron pattern
转换为类似于 5
段式的 linux crontab pattern
功能,用于解决秒级粒度下由于延迟引起的任务执行不准确问题: 定时任务-表达式
由于本次版本变更内容较多,以下中文介绍一些较为重要的改进点,详细的 ChangeLog
请参考: https://github.com/gogf/gf/releases/tag/v2.7.0
完整代码变更请参考:https://github.com/gogf/gf/compare/v2.6.0...v2.7.0
感谢所有参与本次版本的贡献开发者们💖!
组件改进
gdb
- 新增
Stats
接口定义及实现,用于获取当前数据库orm
对象维护的连接池信息: ORM高级特性-连接池状态 - 新增
FormatUpsert
接口定义及实现,用于不同数据库类型实现写入/更新操作,即Save
操作。 - 新增
SqlType
类型,并将已有的sql type
类型定义从string
类型改为了SqlType
类型。 - 新增
Model.OnConflict
方法,用于实现部分数据库类型当字段唯一键冲突时的更新策略,特别是实现Save
操作。 - 修复
ClearTableFieldsAll
方法失效的问题。
- 新增
ghttp
01. 新增MiddlewareNeverDoneCtx
中间件,开发者可以选择使用,避免客户端取消请求时服务端收到的context cancel
问题: 常见问题 02. 新增http server
的监控指标实现,默认关闭不会影响性能,只有在开启metrics
特性时才会自动开启: HTTPServer-监控指标 03. 改进tracing
记录,将span
名称从query uri
改为了route uri
,便于查看时更容易聚合。 04. 改进Request
对象中的EnterTime
及LeaveTime
属性类型,从int64
改为了*gtime.Time
类型。 05. 将WebSocket
方法标记废弃,将会在未来的大版本中去掉,也会去掉http server
对websocket
的内嵌耦合支持。未来建议通过其他的websocket
开源组件结合http server
一起使用,更加解耦灵活。 06. 修复由于Request Body
默认可重复读取的问题引发的大文件上传占用内存问题。 07. 修复StartPProfServer
方法的pattern
参数失效问题。 08. 文件下载方法Request.ServeFileDownload
方法新 增Access-Control-Expose-Headers Header
返回,以支持ajax
文件请求。 09. 服务配置新增SwaggerUITemplate
配置项,用于快捷配置SwaggerUI
页面的HTML
内容。 10.http server
启动路由打印时不再打印内置的中间件。gclient
- 修复在开启服务发现的情况下,所有的
http
请求均会强制走服务发现的域名解析问题。 - 新增
http client
的监控指标实现,默认关闭不会影响性能,只有在开启metrics
特性时才会自动开启: HTTPClient-监控指标
- 修复在开启服务发现的情况下,所有的
gcron
- 新增忽略符号
#
,对cron pattern
中的 秒字段 进行占位,表示忽略秒字段,用于将6
段式的cron pattern
转换为5
段式的linux crontab pattern
: 定时任务-表达式 - 修复在确定的秒级任务场景中(例如
2 * * * * *
),当底层时间出现不准确时可能引发两次任务执行。
- 新增忽略符号
gerror
- 修复
gerror.HasCode
方法递归逻辑失效的问题。
- 修复
g
- 改进
DumpJson
方法,用于实现对任意变量按照JSON
格式进行打印。
- 改进
gcache
- 修复大量创建
Cache
对象引发的goroutine
过多问题。
- 修复大量创建
gcmd
- 新增
RunWithSpecificArgs
方法,用于使用自定义的arguments
运行命令对象。 - 修复部分场景下由于参数结构体名称和结构体标签名称冲突引发的参数丢失问题。
- 新增
gfsnotify