farseer-go发布v0.9.0版本,共154项功能新增调整

281 阅读8分钟

中文文档github Source

距离上一次版本发布时间2023.7.27,经过118天的开发,终于迎来v0.9.0的发布。

本次发布新增了,链路追踪组件:

  • 支持:webapi组件接入链路追踪
  • 支持:数据库的链路追踪
  • 支持:Redis链路追踪
  • 支持:es的链路追踪
  • 支持:etcd链路追踪
  • 支持:rabbit.send链路追踪
  • 支持:rabbit的消费链路追踪
  • 支持:queue的消费链路追踪
  • 支持:task的消费链路追踪
  • 支持:fschedule的消费链路追踪
  • 支持:链路的scope范围功能

在您的应用开发中不需要为此额外增加任何代码,组件将隐式的为你提供链路追踪的能力。

本次发布新增和改动共计:154项:

farseer-go v0.9.0 by 2023.11.22

  • fs
    1. 新增:不同操作系统的差异符号
    2. 新增:parse.Convert转换枚举类型
    3. 新增:链路追踪接口
    4. 新增:asyncLocal类型,用于实现routine的泛型版本
    5. 新增:exception.ThrowWebExceptionBool 为true时抛异常方法
    6. 新增:exception.ThrowWebExceptionError抛出WebException异常
    7. 新增:string转collections.List
    8. 新增:parse类型转换:string转time.Time、DateTime、ToInt、ToInt64、ToUInt、ToFloat32、ToFloat64、ToString、ToBool
    9. 新增:日志的时间格式配置
    10. 调整:未配置日志滚动间隔时,默认按天存储
    11. 调整:获取IP方式改为,从C类到A类的顺序获取
    12. 调整:container.ResolveType解析实例方法,增加error返回参数
    13. 调整:exception.CatchException方法内部不再捕获异常
    14. 调整:退回1.20新增的方法,降低到1.9版本的方法
    15. 修复:日志json输出、或文件写入时,没有移除颜色标记
    16. 修复:随机字符串,长度无效
    17. 修复:如果配置文件没有设置日志级别,则默认为Trace级别
    18. 修复:时间类型转换缺时区的问题
  • linkTrace
    1. 支持:webapi组件接入链路追踪
    2. 支持:数据库的链路追踪
    3. 支持:Redis链路追踪
    4. 支持:es的链路追踪
    5. 支持:etcd链路追踪
    6. 支持:rabbit.send链路追踪
    7. 支持:rabbit的消费链路追踪
    8. 支持:queue的消费链路追踪
    9. 支持:task的消费链路追踪
    10. 支持:fschedule的消费链路追踪
    11. 支持:链路的scope范围功能
  • collections
    1. 新增:Parallel for range 并行操作
    2. 新增:For方法,等同于for i
    3. 新增:ToList 将arr按,号分隔,转换成List[T]
    4. 新增:list.Reverse()反转集合
    5. 新增:ReadonlyDictionary.ToDictionary()转Dictionary方法
    6. 新增:AddList、AddArray方法
    7. 新增:GroupBy方法支持map[x]collections.List[x]类型
    8. 调整:将动态反射的代码实现移到fs组件中
    9. 调整:如果Enumerable对象为空,则返回默认Enumerable
    10. 调整:NewReadonlyDictionaryFromMap字典map为nil时,重新初始化
    11. 调整:types.ListAdd的参数为非指针类型
    12. 修复:没数据时使用Insert插入报错
    13. 修复:字符串排序的问题
  • mapper
    1. 新增:mapper组件支持转换对象执行初始化方法MapperInit
    2. 新增:mapper组件 数组嵌套转换支持
    3. 新增:mapper 支持 map 非指针数组
    4. 新增:mapper 支持实体内list集合转换
    5. 新增:自定义collections.List类型转换
    6. 新增:支持 ListType 类型转换
    7. 新增:支持 decimal.Decimal
    8. 调整:mapper组件 非导出字段,接口类型的 过滤转换
  • cache
    1. 仅升级依赖组件版本号
  • cacheMemory
    1. 调整:异常信息提示
  • data
    1. 新增:上下文初始化失败时提醒
    2. 新增:通用仓储方法:Update,数据修改方法
    3. 新增:通用仓储方法:IsExists,记录是否存在
    4. 新增:通用仓储方法:Delete,删除数据
    5. 新增:IMigratorCreate接口,在PO实体,可自定义创建表时的SQL
    6. 新增:获取decimal.Decimal类型字段
    7. 新增:Exprs方法,批量Expr操作数据库
    8. 新增:对Clickhouse数据库的支持
    9. 新增:Clickhouse的OptimizeFinal方法
    10. 新增:Omit方法,Update时可以忽略更新字段
    11. 新增:数据库的链路追踪
    12. 新增:实现数据库的执行耗时统计
    13. 新增:支持表引擎设置(如innodb、memory)
    14. 新增:IInternalContext接口增加:ExecuteSql、ExecuteSqlToResult、ExecuteSqlToValue方法
    15. 新增:手动注册内部上下文,以实现动态数据库方案
    16. 调整:TableSet部份方法的返回值(增加返回行数、error)
    17. 调整:健康检查时,返回数据库时间
    18. 调整:自动创建表开关改到上下文的tag中
    19. 调整:初始化tableSet时,需要优先设置tableName
    20. 调整:移除routine依赖,改用asyncLocal类型
    21. 调整:Update方法转map时,json需要单独处理
    22. 修复:Row取出为nil时,返回默认值
    23. 修复:主键字段没有做蛇形转换的问题
    24. 修复:多个上下文共享事务冲突的问题
    25. 修复:gorm的save方法在没有主键时,会以insert方式执行,与框架的用途冲突。取消insert执行
  • utils
    1. 新增:二元操作逻辑 condition.IsTrue
    2. 新增:数学计算工具 operator.GetSum GetTail GetHead
    3. 新增:str.PadLeft 向左填充字符串方法
    4. 新增:http.GetDomain()从URL中获取Domain部份
    5. 调整:增加http状态码判断
    6. 调整:读取文件时,使用不同操作系统的差异符号
  • webapi
    1. 新增:webapi组件接入链路追踪
    2. 新增:字段验证器
    3. 新增:webapi.UseApiDoc()开启api doc文档
    4. 新增:HttpData对象,在上下文中可以设置、获取值
    5. 新增:允许设置StatusMessage
    6. 新增:IFilter 路由过滤器接口
    7. 新增:jwt过滤器
    8. 新增:获取真实IP
    9. 新增:HttpResponse.Reject() 拒绝服务
    10. 新增:webapi.PrintRoute打印所有路由信息到控制台
    11. 新增:action.ImageResult 处理图片
    12. 调整:Mvc模式的HttpContext改为嵌入类型
    13. 调整:简化HttpResponse对象
    14. 调整:容器注入实例找不到时,抛出异常
    15. 调整:将解析request.Body、请求参数的解析放到routing中间件调用
    16. 调整:HttpResponse.Body改为[]any类型,不使用[]reflect.Value
    17. 调整:移除routine依赖,改用asyncLocal类型
    18. 调整:使用Cors组件时,插入到中间件第一个
    19. 修复:表单提交匹配dto json tag大小写问题
  • redis
    1. 新增:Redis链路追踪
    2. 新增:redis.Register手动注册内部上下文,以实现动态Redis方案
    3. 新增:事务、管理方法
    4. 调整:健康检查时,返回Redis服务端时间
    5. 调整:移除routine依赖,改用asyncLocal类型
    6. 调整:移除redis.Nil的错误类型
    7. 修复:异常时不能写入redis
  • fSchedule
    1. 新增:依赖链路追踪组件
    2. 新增:对接收的任务做基础检查
    3. 新增:Ver版本字段
    4. 新增:注册客户端时,新增数据上传
    5. 新增:本地调试模式
    6. 新增:TaskGroupId主键
    7. 新增:收到调度中心检查存活时打印日志
    8. 调整:日志上传改为全局批量上传模式
    9. 调整:精简代码,去除默认值的赋值。
    10. 调整:服务端注册改到健康检查中执行
    11. 调整:客户端注册时默认不发送当前IP,由服务端获取
    12. 调整:获取IP方式改为,从C类到A类的顺序获取
    13. 调整:移除routine依赖,改用asyncLocal类型
    14. 修复:错误的时间戳格式
  • elasticSearch
    1. 新增:健康检查
    2. 新增:支持范围查询
    3. 新增:es的链路追踪
  • queue
    1. 新增:queue的消费链路追踪
    2. 调整:移除routine依赖,改用asyncLocal类型
    3. 修复:拉取数量为0时,跳出消费
  • rabbit
    1. 新增:自动重连机制
    2. 新增:对消费处理函数的异常捕获
    3. 新增:健康检查
    4. 新增:rabbit的消费链路追踪入口
    5. 新增:rabbit.send链路追踪
    6. 新增:消费的中,增加QueueName字段
    7. 调整:移除routine依赖,改用asyncLocal类型
    8. 修复:调试状态下无法重连的问题
  • tasks
    1. 新增:task的消费链路追踪
    2. 调整:移除routine依赖,改用asyncLocal类型
  • etcd
    1. 新增:etcd的链路追踪
    2. 调整:移除routine依赖,改用asyncLocal类型
  • eventBus
    1. 新增:etcd的链路追踪
    2. 调整:移除routine依赖,改用asyncLocal类型

1、介绍

基于Golang模块化完整的基础设施框架,创建现代化Web应用和APIs

使用目前最为流行的组件(共17个组件),并用模块化技术来使用这些组件。

框架完美支持 DDD领域驱动 的战术设计,如仓储资源库应用层事务领域事件应用层动态WebAPI

2、有什么特点?

  • 统一配置:所有的配置被整合到./farseer.yaml

  • 优雅:所有的模块都遵循开发者体验优先为原则。

  • 模块化:完整的模块化系统,使你能够开发可重复使用的应用程序模块。

  • 领域驱动:帮助你实现基于DDD的分层架构并构建可维护的代码库。

  • 健康检查:farseer-go会在启动时立即检查您的所有依赖项,如数据库、Redis、MQ,如果连接失败则无法启动。

  • 链路追踪:如果您使用框架中的Orm、Redis、Http、Grpc、ES、MQ、EventBus、Task、fSchedule,将隐式为您实现链路追踪,并提供API请求日志、慢查询。