原文链接
stream发送多条命令
1
| rpc SayHelloStreamServer (HelloRequest) returns (stream HelloReply) {}
|
这样在client端采用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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时间
1
| ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
|
超过最大size部分
1
| defaultServerMaxReceiveMessageSize = 1024 * 1024 * 4
|
预设大小是4m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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端之间的连接部分