维护每一个依赖包下面的ProviderSet,然后运行wire命令。 比如,我现在需要增加一个GRPC服务器,只需要在ProviderSet里边添加NewGRPCServer方法: varProviderSet = wire.NewSet(NewHTTPServer, NewGRPCServer, NewRegistrar) 然后运行wire命令,这时候wire_gen.go文件里边就会增加NewGRPCServer方法的调用。 再比如,我现在需要...
收敛,统一:将逻辑都收敛统一到一起,通过代码生成工具来保证HTTP Service、grpc Service等功能具有一致的行为 跨语言:众所周知Protobuf是跨语言的,java、go、python、php、js、c等等主流语言都支持 拥抱开源生态:比如Kratos复用了google.http.api、protoc-gen-openapiv2、protoc-gen-validate 等等一些犀利的Protobuf周边...
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2@latest go install github.com/go-kratos/kratos/cmd/protoc-gen-go-errors/v2@latest go install gi...
它能够根据你的代码,生成相应的依赖注入 go 代码。 与其他依赖注入工具不同,比如 Uber 的 Dig 和 Facebook 的 Inject,这 2 个工具都是使用反射实现的依赖注入,而且是运行时注入(runtime dependency injection)。 wire 是编译代码时生成代码的依赖注入,是编译期间注入依赖代码(compile-time dependency injection)。而...
哇,原来只是把一些gRPC的服务绑定到gin的路由里了呀。 借用gin来调用gRPC. grpc.New()就不分析了。 然后是AppNew() //go:generate kratos tool wire type App struct { svc *service.Service http *bm.Engine grpc *warden.Server } func NewApp(svc *service.Service, h *bm.Engine, g *warden.Server...
Kratos是一个由Bilibili开源的Go语言微服务框架,旨在为分布式应用提供高效、灵活、可扩展的解决方案。Kratos在设计时注重以下几个方面:分层设计:Kratos采用分层设计,将业务逻辑和底层框架分离,使得应用更易于维护和扩展。高性能:Kratos内置了多种高性能的组件和中间件,例如gRPC、etcd、Prometheus等,可以大幅提升应用的性能和...
Kratos Maintainer,gRPC-go contributor 基于Protocol Buffers(Protobuf)的生态 在Kratos中,API定义、gRPC Service、HTTP Service、请求参数校验、错误定义、Swagger API json、应用服务模版等都是基于Protobuf IDL来构建的: 举一个简单的helloworld.proto例子:
收敛,统一:将逻辑都收敛统一到一起,通过代码生成工具来保证HTTP Service、grpc Service等功能具有一致的行为 跨语言:众所周知Protobuf是跨语言的,java、go、python、php、js、c等等主流语言都支持 拥抱开源生态:比如Kratos复用了google.http.api、protoc-gen-openapiv2、protoc-gen-validate 等等一些犀利的Protobuf周边...
收敛、统一:将逻辑都收敛统一到一起,通过代码生成工具来保证HTTP Service、gRPC Service等功能具有一致的行为 跨语言:众所周知Protobuf是跨语言的,Java、Go、Python、PHP、JS、C等等主流语言都支持 拥抱开源生态:比如Kratos复用了google.http.api、protoc-gen-openapiv2、protoc-gen-validate等等一些犀利的Protobuf周边生...
Kratos基于Protobuf定义协议,gRPC进行服务间通讯,在公司的强异构开发场景下,具有很强的实用价值。 Kratos基于插件机制开发,极其容易对其进行扩展(看我的kratos-transport,我甚至插入了Gin、FastHttp、Hertz等Web框架)。 综上,是我的理由。在做技术选型的时候,我是横向对比了市面上几乎所有的框架,最终选择了Kratos。 还...