api/objectStorageService.pb.go:1834:31: m.LastModified.MarshalToSizedBuffer undefined (type *timestamppb.Timestamp has no field or method MarshalToSizedBuffer)
api/objectStorageService.pb.go:2382:31: m.CreationDate.MarshalToSizedBuffer undefined (type *timestamppb.Timestamp has no field or method MarshalToSizedBuffer)
api/objectStorageService.pb.go:2642:31: m.LastModified.MarshalToSizedBuffer undefined (type *timestamppb.Timestamp has no field or method MarshalToSizedBuffer)
api/objectStorageService.pb.go:2746:21: m.LastModified.Size undefined (type *timestamppb.Timestamp has no field or method Size)
api/objectStorageService.pb.go:2997:21: m.CreationDate.Size undefined (type *timestamppb.Timestamp has no field or method Size)
api/objectStorageService.pb.go:3125:21: m.LastModified.Size undefined (type *timestamppb.Timestamp has no field or method Size)
api/objectStorageService.pb.go:3589:28: m.LastModified.Unmarshal undefined (type *timestamppb.Timestamp has no field or method Unmarshal)
api/objectStorageService.pb.go:5023:28: m.CreationDate.Unmarshal undefined (type *timestamppb.Timestamp has no field or method Unmarshal)
api/objectStorageService.pb.go:5817:28: m.LastModified.Unmarshal undefined (type *timestamppb.Timestamp has no field or method Unmarshal)
kratos 动态生成 grpc 代码时 ,使用的是 protoc --gofast_out=plugins=grpc:. *.proto ,本质上使用的是 protoc-gen-gofast
直接使用 protoc --go_out=plugins=grpc:. *.proto 生成文件没有问题,即使用 protoc-gen-go 没有问题
protoc --go_out=plugins=grpc:. *.proto
报错:object_detection/protos/flexible_grid_anchor_generator.proto: File not found.
object_detection/protos/grid_anchor_generator.proto: File not found.
object_detection/protos/multiscale_anchor_generato...
查看项目文件pbdemo/api/api.proto:
// 定义项目 API 的 proto 文件 可以同时描述 gRPC 和 HTTP API
// protobuf 文件参考:
// - https://develop
文章目录apicmdconfigsdaodimodelserverservice
上篇文章go微服务框架kratos学习笔记一(kratos demo)跑了kratos demo
本章来看看demo项目的整体结构。
├─api # 对外接口
├─cmd # main
├─configs # 配置
├─internal
│ ├─dao #数据访问...
kratos的grpc框架 不是直接使用的google的grpc,http也是对grpc接口做了封装(上一节我们就学习了使用pb生成http相关接口)。
官方原文:
GRPC Warden:基于官方gRPC开发,集成discovery服务发现,并融合P2C负载均衡;
这次我们需要新建2个项目,用于展示RCP的相互调用,由于都是可以调用对方提供的服务,所以两个服务都可以作为客户端和服务端。
新建项目(服务1):
kratos new rpcserver1 #这里不指定创建类型,项目会同事
https://blog.csdn.net/freewebsys/article/details/109139648
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys
1,关于kratos
Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
看到项目目录gopath文件夹下面bin文件夹中生成protoc-gen-go可执行文件,则证明grpc安装成功。
然后cd到你项目中存放.proto文件的目录下
执行:protoc --go_out=plugins=...
开发中需要用java程序调用一个golang程序的grpc接口。需要使用原始proto文件生成java的模板代码。
网上教程大多数给的是这段代码:
protoc -I=. --java_out=out engine.proto
这个代码生成的内容里,只会有proto的序列化和反序列化代码。不会有调用服务所用的newBlockingStub(chan);代码段,因此我们无法调用外部服务。(即只会翻译message段,不会翻译service段)
首先,从https://repo1.maven.org
创建项目成功后,进入api目录下可以看到api.proto文件:
option go_package = "api";
option (gogoproto.goproto_getters_all) = false;
service RPCDemo {
rpc Ping(.google.protobuf.Empty) returns (.google.protobuf.Empty);
rpc SayHello(HelloReq) returns (.google.protobuf.Empt
首先,客户端发起RPC调用请求
// SayHello say hello.
func (d *dao) SayHello(c context.Context, req *api.HelloReq) (resp *empty.Empty, err error) {
if resp, err = d.demoClient.SayHello(c, req); err != nil {
Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。
Features
HTTP Blademaster:核心基于gin进行模块化设计,简单易用、核心足够轻量;
GRPC Warden:基于官方gRPC开发,集成discovery服务发现,并融合P2C负载均衡;
Cache:优雅的...
Kratos是bilibili开源的一套Go微服务框架,包含大量微服务相关框架及工具。
名字来源于:《战神》游戏以希腊神话为背景,讲述由凡人成为战神的奎托斯(Kratos)成为战神并展开弑神屠杀的冒 险历程。
快速开始前,首先需要安装Go环境:Go version>=1.13
CentOS Go环境搭建,
Windows自行百度哈
设置代理环境变量,提高下载速度。注意GO1.13及之后支持direct的写法
go env -w GOPROXY=https://gopro