kratos v3的新功能汇总页把所有新增特性都整理到了一起:支持http流式传输、类型安全的配置读取、可扩展的请求校验、标准结构化日志、统一的json输出格式,还有新增的错误处理工具函数。官方特意说明,升级的时候完全没必要一口气把所有新特性全启用,等你把服务顺利迁移到v3、跑稳定之后,再根据实际业务需求逐个采用就好。

来源:Kratos 官方文档
HTTP流式传输是这批更新里对接口设计影响比较大的特性。官方文档说明,Kratos v3可以直接为流式RPC生成对应的HTTP绑定:服务端流能映射为Server-Sent Events,客户端流或者双向流可以映射为WebSocket。你原来写的同一个服务实现,仍然可以同时注册到自动生成的HTTP服务和gRPC服务里。对需要做事件推送、进度回传、客户端流式上传或者双向同步的服务来说,这个特性直接省去了手写网关适配代码的工作量。

来源:Kratos 官方文档
错误处理部分也补充了不少实用能力。官方新功能页提到v3新增了errors.Join、errors.ErrUnsupported,还有对应HTTP 429状态码的TooManyRequests/IsTooManyRequests工具函数。碰到限流触发、缓存和数据库同时失败,或者需要同时保留多个错误来源的场景,这些工具函数能让错误树更方便用标准库的errors.Is和errors.As做断言判断,也能让传输层的错误映射逻辑更稳定。
不过官方没有把这些新能力做成默认开启的开关:HTTP流式传输会改变底层网络协议和运维行为,JSON输出规则调整可能修改响应报文的字节结构,校验回调逻辑还可能直接拒绝之前可以正常通过的请求。团队要接入这些能力的话,仍然需要用HTTP/gRPC契约测试覆盖所有接口变动,还要保证服务提供方和调用方同步部署兼容版本。
配置读取和校验的能力也建议单独评估后再上线。泛型 `config.Get[T]` 更适合读取单个基础类型配置,或者某一块配置子树,自定义的ValidatorFunc回调则可以把Protovalidate、AIP字段行为规则,还有业务自己的校验逻辑串起来使用。官方把这部分也归到「按需采用」的范围内,意思是这些能力要服务于明确的接口约束需求,不要刚升级完v3就急着把所有旧写法全部替换。
信源说明:本文内容整理自Kratos v3新功能页和HTTP流式调用官方文档;文中提到的所有特性均来自官方公开页面,是否采用取决于你的服务协议、客户端兼容策略和团队的测试覆盖情况。










