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