声明:本文首发在同名公众号:王中阳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. HW学习笔记

    栈库分离方法注意事项: 所有用户输入数据需要进行分离过滤,不能遗漏.选择安全的过滤函数 如 mysql_real_escape_string(),避免过滤不严格导致注入 SQL查询模板需要设计安全,米 ...

  2. markdown 一键上传发布

    工具介绍 工具由来 对于程序员等常常需要写文档的人来说,将本地markdown文档同步到云端博客平台,是一件比较繁琐的事情,首当其冲的是,大量的本地图片需要"互联网"化,即使网络上 ...

  3. 手把手带你认识GaussDB轻量化运维管理工具

    本文分享自华为云社区<GaussDB轻量化运维管理工具介绍>,作者: Gauss松鼠会小助手. 一.GaussDB 运维管理平台简介 开放生态层 友好Web界面,多云皮肤个性化定制 丰富的 ...

  4. element_ui 知识点整理

    第一章复习,树型组件数据填充:数据组件需要的数据绑定到:data   但是具体那些字绑生成标签需要在定义一人:props ="这儿绑定对象" 对象中label  children ...

  5. [MAUI] 混合开发概念

    ​ 混合开发的概念是相对与原生开发来说的:App不直接运行原生程序,而是在原生程序中运行一个Web程序,原生程序中包含Web运行时,用于承载Web页面.暂且将原生应用称之为Web容器,Web容器应该能 ...

  6. MYSQL 主从不一致的原因分析

    数据库作为存储数据的组件,数据的一致性一定是要保证的前提,今天给出两个场景来分析数据不一致的原因. binlog同步模式导致主从不一致 在MYSQL 中主库向从库同步数据是利用binlog记录修改操作 ...

  7. 【easy52pojie】一款方便看吾爱论坛帖子的爬虫程序

    众所周知吾爱论坛一页最多显示十来条回帖,且间隔很大,每页的信息密度太低了.在帖子很庞大的情况下,一页一页翻页,着实有点痛苦. 故简单敲敲代码,使用request xpath技术做了一个论坛帖子回复查看 ...

  8. 蓝牙BLE无线控制氛围灯解决方案之特色解析

    谁的方案?   前几天和一个小伙伴讨论方案公司的价值,他给出定位还是比较准确地,作为一家方案公司,就是让产品公司,低成本,快速的推出具有市场竞争力的产品.凭借着本团队在无线蓝牙领域的深耕,这些年也做了 ...

  9. 为什么ASP.NET Core的路由处理器可以使用一个任意类型的Delegate

    毫不夸张地说,路由是ASP.NET Core最为核心的部分.路由的本质就是注册一系列终结点(Endpoint),每个终结点可以视为"路由模式"和"请求处理器"的 ...

  10. 三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析

    三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析 随着移动智能终端设备的不断发展和普及,如智能手机.平板电脑等,以及5G网络技术的推广应用,使得在这些设备上频繁使用三维地理空间数据 ...