stream发送多条命令
rpc SayHelloStreamServer (HelloRequest) returns (stream HelloReply) {}
这样在client端采用
stream, err := c.SayHelloStreamServer(ctx, &pb.HelloRequest{Name: name})
if err != nil {
log.Fatalf("could not greet: %v", err)
}
for {
res, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
log.Println(res.Message)
}
控制rpc service之间的connect时间
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
超过最大size部分
defaultServerMaxReceiveMessageSize = 1024 * 1024 * 4
预设大小是4m
func main() {
srv := new(server)
c, err := net.Listen("tcp", port)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
opts := []grpc.ServerOption{
grpc.MaxMsgSize(1024 * 1024 * 8),
}
s := grpc.NewServer(opts...)
pb.RegisterGreeterServer(s, srv)
log.Println("Server starting...")
s.Serve(c)
}
这段是改变server端,当然client端也可以改变
在k8s的使用
首先是相关的yaml文件的一个解析部分
结论部分
尝试自己去实现一些基于grpc的服务,client端同server端之间的连接部分