Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

大家好啊,GoFrame框架今天发布了v2.5.0正式版本啦!👏👏👏👏

新特性

正式发布微服务开发特性,并新增完整的微服务开发官网章节:微服务开发

功能改进

gdb

本次版本主要是对已有功能组件以及开发工具上的改进工作。其中:

  • 开发工具新增了gf gen ctrl命令,以规范化定义、开发API接口,增加控制器、SDK的代码生成提高开发效率,以解决Golang工程开发中接口层面的规范和效率问题,详情请参考:接口规范-gen ctrl
  • 原有gf gen dao命令新增了TypeMapping特性,允许开发者自定义生成的数据表实体对象属性字段的Golang类型:数据规范-gen dao

其他变更内容请参考以下change logEnjoy!🍺🍺🍺🍺🍺🍺🍺🍺


修复跨库操作时自动查询表结构失败的问题:

Github ChangeLog

https://github.com/gogf/gf/

issues/2338
  • 修复Namespace配置在pgsql下未生效的问题。
  • 修复使用新版统一配置,无法打开sqlite数据库文件的问题:https://github.com/gogf/gf/issues/2435
  • 改进底层数据库操作返回逻辑,将底层错误通过gerror.Wrap后返回,以保证上层能获取底层自定义错误对象。
  • 修复查询数据表时,底层unsigned整形字段转换为了signed整形类型的问题:https://github.com/gogf/gf/issues/2356
  • 修复子查询时,多层Model作为子查询参数的解析问题:https://github.com/gogf/gf/issues/2339
  • 改进时间维护功能,写入/更新/删除时间支持完整的时间(粒度到纳秒)写入。
  • 修复在软删除场景下,给定空Where条件的未限制执行问题:https://github.com/gogf/gf/issues/2427
  • releases/tag/v2.5.0

    完整代码变更: v2.4.0...v2.5.0,感谢本次所有的贡献开发者:

    Image Added

    功能改进

    1. gdb
      1. 改进ORM SQL日志记录,操作的字段按照数据表字段定义顺序进行操作。
      2. 改进HOOK方法实现,支持修改in参数的Table字段后修改执行的表名。
      3. 新增AllAndCount/ScanAndCount方法,用于实现便捷的分页查询场景。
      4. 新增Model.WhereOrNot/WhereOrPrefixNot条件方法。
    2. gi18n
      1. 改进支持中文(Unicode)作为转译的键名。
    3. gclient
      1. 新增Discovery链式操作方法,用于设置本次请求的服务发现组件。
    4. ghttp
      1. 改进请求Context上下文处理,每次Context的变更将会影响底层的http.Request对象。以支持自定义HTTP Handler的数据交互场景。
      2. 新增Endpoints配置项支持,用于自定义Server的服务注册发现地址,而可以使用当前监听的地址。
    5. goai
      1. 改进参数校验识别,如果参数为必须参数,则在OpenAPIv3结果中进行标记。
    6. gsel
      1. 修复RoundRobin实现中Endpoints更新的锁机制问题。
    7. glog
      1. 新增TimeFormat配置,用于自定义日志输出的时间格式:日志组件-配置管理
      2. 改进Rotation实现,支持短运行程序的日志文件切分。
    8. gtag
      1. 新增GetGlobalEnums方法,用于获取全局注册的枚举类型。
    9. gutil
      1. 新增DumpJson方法,用于将任意类型变量按照JSON格式化打印到终端,便于人工阅读。
    10. gvalid
      1. 新增enums校验规则,用于实现枚举类型的自动识别和校验:数据校验-校验规则

    社区组件

    1. 修复contrib/registry/polaris组件在多个服务端时的负载均衡问题。
    2. 改进contrib/drivers/pgsqlTableFields返回的Index字段序号统一从0开始。
    3. 改进contrib/nosql/redis新增用户配置项支持。
    4. 改进contrib/rpc/grpcx组件,grpcx.Server新增Endpoints配置项支持,用于自定义服务注册发现的地址。
    5. 新增contrib/sdk/httpclient组件,用于本次版本新增的gf gen ctrl命令生成的HTTP SDK代码文件依赖库。
    6. 新增contrib/trace/otlpgrpccontrib/trace/otlphttp组件,用以实现基于OpenTelemetry的链路跟踪统一对接组件。

    开发工具

    1. 新增gf gen ctrl命令,用于编译api定义目录,自动生成规范的controllerHTTP SDK代码:接口规范-gen ctrl
    2. 改进gf gen dao命令,新增TypeMapping特性,开发者可自定义数据表字段类型与生成的Go实体数据结构属性类型映射,并且可以方便引入第三方包类型(如decimal包以支持高精度类型):数据规范-gen dao
    3. 改进gf gen enums命令,其中的Prefix参数改为Prefixes,以支持多个生成枚举类型的包前缀指定:枚举维护-gen enums
    4. 改进gf gen service命令:
      • 生成的service文件中,增加方法注释生成。
      • 当生成的service文件中存在import冲突时,自动生成import alias
    5. 改进命令行封装,暴露gfcmd.Command类型,便于开发者可以继承扩展自定义命令行功能。
    6. 改进gf docker命令,将构建文件参数设置为非必须(考虑兼容),未来将会只用于Docker构建,不再耦合二进制构建功能。如果有完整构建需求,建议未来结合gf build功能共同使用。并更新项目工程模板的make image命令,使用gf build+gf docker命令实现。
    7. 改进gf init命令,修复在部分场景下初始化项目覆盖已存在的.git/.gitignore目录及文件问题或权限报错问题。
    8. 改进gf up命令,修复在部分场景下的框架版本更新问题,以及在windows系统下的下载安装问题。
    9. 改进gf version命令,修复在部分场景下的框架版本识别问题。
    10. 修复gf gen pbentity命令,生成的proto文件实体数据结构的float32/float64/[]byte类型修改为float/double/bytes类型。
    11. 改进开发工具,部分命令可以不用显示配置importPrefix参数,如:gf gen dao/service

    兼容提示

    1. ghttp.Request中的ContextGetCtx方法返回的context.Context继承去掉了NeverDoneCtx的嵌套,意味着控制器中默认传递的ctx上下文对象完全继承于标准库的http.Request中的ctx。在请求结束时将会自动调用Done方法结束掉,不能将该ctx传播给需要进一步执行的异步流程。因此,从这个版本开始,使用者可能会遇到以下两个问题:
      • 如果需要传播给异步流程或者保持和之前逻辑兼容:增加一个中间件,在中间件中调用r.SetCtx(r.GetNeverDoneCtx())全局覆盖后续使用的ctx为不会结束的ctx

    Image Added

      • 当客户端主动取消请求后,服务端可能会遇到context canceled的错误。这个属于正常现象,当客户端不在需要这个请求的结果时会取消请求,这时服务端继续往下执行也没有了意义。如果介意这个错误,可以参考上面的中间件增加NeverDoneCtx的处理逻辑,这个时候服务端会忽略客户端的取消请求并继续往下执行。
  • gredis
    1. 修复对象创建时的配置处理及对象初始化问题。
  • 社区组件

    数据库驱动

    1. 改进dm/mysql组件,解决当时区配置中带有特殊字符(例如/)的QueryEscape问题。

    NoSQL适配

    1. 修复redis组件配置中缺失的连接池配置参数。

    服务注册发现

    1. 增加file注册发现组件,用于本地基于文件的服务注册发现,通常用于单节点测试。
    2. 完善etcd/polaris/zookeeper实现细节,并完善单测用例。

    微服务脚手架

    1. 新增grpcx微服务组件,用于grpc通信协议的微服务开发:微服务开发

    开发工具

    1. 增加gf gen pb命令,用于编译proto文件生成go pb文件:协议编译-gen pb
    2. 增加gf gen pbentity命令,用于自动生成数据库表的proto数据结构定义文件:数据表PB-gen pbentity
    3. 增加gf gen enums命令,用于解析指定目录go文件,并根据enum定义规范自动生成enums数据文件,主要用于OpenAPI接口文档展示(实验特性):枚举维护-gen enums
    4. 改进gf up命令,增加自动升级工具CLI的功能。
    5. 改进gf gen service命令,当方法注释后不再自动生成到接口定义文件中。
    6. 改进gf build命令,增加DumpENV选项,用于控制在编译时是否打印编译使用的环境信息,默认关闭。
    7. 改进gf docker命令,增加Tag选项,用以兼容旧版本。
















    Panel
    titleContent Menu

    Table of Contents
    maxLevel2