声明:本文首发在同名公众号:王中阳Go,未经授权禁止转载。

GoFrame框架今天发布了v2.7.0正式版本啦!

最大看点

本次版本最大的看点是提供了metric监控组件,主库提供了接口化的metric设计,社区组件提供了基于OpenTelemetrymetric接口实现。该特性在默认情况下是关闭的,只有在引入具体的接口实现或者社区实现时才会默认启用。当前版本同时提供了HTTP Client&Server的监控指标实现,其他组件的监控指标将在后续版本中陆续提供。详情请参考GoFrame官方文档:服务监控告警

同时,在本次版本中实现了对dm/mssql/oracle/pgsql/sqlite数据库的Save操作支持,感谢社区小伙伴

由于本次版本变更内容较多,以下中文介绍一些较为重要的改进点,详细的ChangeLog请参考:https://github.com/gogf/gf/releases/tag/v2.7.0

完整代码变更请参考:https://github.com/gogf/gf/compare/v2.6.0...v2.7.0

组件改进

  1. gdb
  • 新增Stats接口定义及实现,用于获取当前数据库orm对象维护的连接池信息:ORM高级特性-连接池状态

  • 新增FormatUpsert接口定义及实现,用于不同数据库类型实现写入/更新操作,即Save操作。

  • 新增SqlType类型,并将已有的sql type类型定义从string类型改为了SqlType类型。

  • 新增Model.OnConflict方法,用于实现部分数据库类型当字段唯一键冲突时的更新策略,特别是实现Save操作。

  • 修复ClearTableFieldsAll方法失效的问题。

  1. ghttp
  • 新增MiddlewareNeverDoneCtx中间件,开发者可以选择使用,避免客户端取消请求时服务端收到的context cancel问题:常见问题
  • 新增http server的监控指标实现,默认关闭不会影响性能,只有在开启metrics特性时才会自动开启:HTTPServer-监控指标
  • 改进tracing记录,将span名称从query uri改为了route uri,便于查看时更容易聚合。
  • 改进Request对象中的EnterTime及LeaveTime属性类型,从int64改为了*gtime.Time类型。
  • WebSocket方法标记废弃,将会在未来的大版本中去掉,也会去掉http serverwebsocket的内嵌耦合支持。未来建议通过其他的websocket开源组件结合http server一起使用,更加解耦灵活。
  • 修复由于Request Body默认可重复读取的问题引发的大文件上传占用内存问题。
  • 修复StartPProfServer方法的pattern参数失效问题。
  • 文件下载方法Request.ServeFileDownload方法新增Access-Control-Expose-Headers Header返回,以支持ajax文件请求。
  • 服务配置新增SwaggerUITemplate配置项,用于快捷配置SwaggerUI页面的HTML内容。
  • http server启动路由打印时不再打印内置的中间件。
  1. gclient
  • 修复在开启服务发现的情况下,所有的http请求均会强制走服务发现的域名解析问题。
  • 新增http client的监控指标实现,默认关闭不会影响性能,只有在开启metrics特性时才会自动开启:HTTPClient-监控指标
  1. gcon
  • 新增忽略符号#,对cron pattern中的秒字段进行占位,表示忽略秒字段,用于将6段式的cron pattern转换为5段式的linux crontab pattern定时任务-表达式
  • 修复在确定的秒级任务场景中(例如2 * * * * *),当底层时间出现不准确时可能引发两次任务执行。
  1. gerror
  • 修复gerror.HasCode方法递归逻辑失效的问题。
  1. g
  • 改进DumpJson方法,用于实现对任意变量按照JSON格式进行打印。
  1. gcache
  • 修复大量创建Cache对象引发的goroutine过多问题。
  1. gcmd
  • 新增RunWithSpecificArgs方法,用于使用自定义的arguments运行命令对象。
  • 修复部分场景下由于参数结构体名称和结构体标签名称冲突引发的参数丢失问题。
  1. gfsnotify
  • 修复gfsnotify对象关闭时可能引发的panic问题。
  1. glog
  • 修复rotate特性对gz后缀日志压缩文件的重复rotate问题。
  1. gmetric
  • 新增gmetric组件,采用了解耦设计,只有接口定义和Noop的实现,真实的实现在社区组件中。只有引入具体的实现才会真实开启metric特性:服务监控告警
  1. gproc
  • 修复进程参数解析在windows下可能失败的问题。
  • 改进Signal信号监听实现,允许在运行时增加信号监听处理方法。
  1. gview
  • 修复由于os.Getwd方法执行失败引起的健壮性问题。
  1. gconv
  • json.RawMessage支持接受slice类型的参数转换。
  • 修复MapDeep内部转换缺失Deep参数引发的递归转换失败问题。
  • 使用MapRange改进内部Map遍历逻辑,提高执行性能。

社区组件

  1. 社区contrib/drivers数据库组件的改进:
  • contrib/drivers/dm组件新增对Save操作的支持。
  • contrib/drivers/mssql组件新增对Save操作的支持。
  • contrib/drivers/oracle组件新增对Save操作的支持,并修复写入参数不支持gdb.Raw类型的问题。
  • contrib/drivers/pgsql组件新增对Save操作的支持。
  • contrib/drivers/sqlite组件新增对Save操作的支持。
  • contrib/drivers/sqlitecgo组件新增对Save操作的支持。
  1. 新增contrib/metric/otelmetric组件,实现了对OpenTelemetry Metric的支持:服务监控告警
  2. 改进contrib/nosql/redis组件:
  • 新增SentinelUsernameSentinelPassword参数配置,以扩展对Redis Sentinel模式的支持:Redis-配置管理
  • 改进Redis接口实现,开发者可以灵活自定义扩展、覆盖社区组件对象redis.Redis类型的实现:Redis-接口化设计
  1. 改进contrib/registry/etcd组件,允许开发者配置etcd链接的校验信息。
  2. 改进contrib/rpc/grpcx组件:
  • 对启用tracing特性时,安全截断请求内容。
  • 新增对logger配置项的支持,允许在配置文件中通过logger配置项配置grpc server的日志对象:服务端配置
  1. 改进contrib/trace/otlphttpcontrib/trace/otlpgrpc组件,修复在短进程场景下正常ShutDown仍可能会出现的trace数据丢失问题。

开发工具

  1. 改进gen dao生成的entity源文件,增加orm标签,以提高数据库查询结果转换到entity对象的效率。
  2. 改进gen service命令,修复生成的源码文件中,方法顺序不一致问题。
  3. 改进build命令,将生成的二进制文件存放目录path参数的默认值从./temp改为了.即当前目录,以解决该参数自定义失效的问题。
  4. 改进init命令,新增-module/g参数,用于在初始化项目时显式指定go module名称。
  5. 修复gen dao在多个数据库生成配置下,使用clear参数时删除已生成的dao源文件的问题。
  6. 修复gen pbentity命令,使用自定义的jsonCase参数无效的问题。
  7. 修复run命令的-w指定监听目录参数失效的问题。

早日上岸!

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:面试群。

本文首发在我的同名公众号:王中阳Go,未经授权禁止转载。

牛蛙!GoFrame2.7正式版的监控组件真是及时雨的更多相关文章

  1. Apache DolphinScheduler 3.0.0 正式版发布!

    ​  点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler   ​ 版本发布 2022/8/10 2022 年 8 ...

  2. WinNTSetup v3.8.7 正式版绿色增强版

    最强系统安装利器:WinNTSetup 现已更新至 v3.8.7 正式版!这次更新修复调整了诸多问题,新版非常好用接近完美!WinNTSetup 现在已经自带BCDBoot 选项,并且完全支持Wind ...

  3. Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载

    微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...

  4. Java 开源博客——B3log Solo 0.6.6 正式版公布了!

    Java 开源博客 -- B3log Solo 0.6.6 正式版公布了!欢迎大家下载. 该版本号引入了数据库连接池:Druid. 另外,欢迎观摩 B3log 团队的新项目:Noty,也很欢迎大家參与 ...

  5. PHP7正式版测试,性能惊艳!

    本周迎来2015年编程语言界的两件大事,Swift7 开源, PHP7 发布.这两件大事,都是可以载入相应的编程语言的史册级的事件. Swift 开源的事,咱先不说了,知乎上也有热烈的讨论,我们今天就 ...

  6. Axure RP Pro 6.5 正式版发布,新功能介绍,

    转:http://www.babesun.com/blog/page/5 2012-4-19,Axure公司发布了Axure RP Pro 6.5 正式版.网上高手发现了Axure支持多语言文件,以此 ...

  7. Microsoft Office 2010 Pro VOL简体中文正式版

    网友们期待的Microsoft Office Professional Plus 2010 VOL简体中文正式版.所谓的“VOL”,即是Volume Licensing for Organizatio ...

  8. Java 开源博客——B3log Solo 0.6.7 正式版公布了!

    Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...

  9. Java 开源博客——B3log Solo 0.6.1 正式版发布了!

    Java 开源博客 —— B3LOG Solo 0.6.1 正式版发布了!欢迎大家下载. 该版本主要是改善细节体验,并加入了一款 Metro 风格的皮肤. 特性 基于标签的文章分类 Ping Goog ...

  10. QzzmServer v2.0正式版发布

                                 V2.1升级程序已发布,具体见下文                                首先,感谢网友的热情的测评及反馈,现Qzzm ...

随机推荐

  1. 【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容

    问题描述 在使用Azure Key Vault的过程中,遇见无法获取机密信息,在不方便直接写代码的情况下,快速使用Azure CLI指令来验证当前使用的认证是否可以获取到正确的机密值. 使用CLI的指 ...

  2. 【Azure 应用服务】Azure Function Python函数中,如何获取Event Hub Trigger的消息Event所属于的PartitionID呢?

    问题描述 在通过Azure Function消费Event Hub中的消息时,我们从Function 的 Trigger Details 日志中,可以获得当前Funciton中处理的消息是哪一个分区( ...

  3. mysql-批量修改表的主键id,修改成联合主键

    1.sql脚本 一. 通过sql脚本,查出所有表的功能,并编写插入修改的联合主键,sql select concat('ALTER table ', TABLE_NAME, ' DROP PRIMAR ...

  4. Ubuntu 离线安装软件包

    Ubuntu 离线安装软件包 关键词:apt-offline,Ubuntu,dpkg,.deb 本文使用的ubuntu20.04,当机器无法连接外网时,我们使用离线的方式安装软件包. 离线安装的软件包 ...

  5. TypeScript实践总结

    下文将TypeScript简称ts 一.为什么要学 1.1 减少bug,提高质量 强语言,语法等方面异常,编译阶段"提前"报错 支持面向对象,软件设计与工程化更为成熟,更容易做单元 ...

  6. 【MongoDB详细步骤】(内附源码)

    第01章-MongoDB 1.安装和启动(docker方式) 1.1.拉取镜像 docker pull mongo:4.4.8 1.2.创建和启动容器 docker run -d --restart= ...

  7. 【大语言模型基础】-详解Transformer原理

    一.Transformer Transformer最开始用于机器翻译任务,其架构是seq2seq的编码器解码器架构.其核心是自注意力机制: 每个输入都可以看到全局信息,从而缓解RNN的长期依赖问题. ...

  8. ADS1299芯片datasheet 重点解析

    一 START和DRDY的关系 start必须要至少提前拉高2个时钟,才会产生DRDY信号,这个非常关键,也是重心所在.很多遗漏的就不会有DRDY信号出来了. 二 START和DRDY的时序图 sta ...

  9. c语言中内存分配malloc,calloc,realloc函数的区别和联系

    一 概念: A malloc() 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址 B calloc() 与malloc相似,参数size ...

  10. Navicat 15下载教程

    Navicat 15下载_永久激活注册码(附图文安装教程) 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转 ...