DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

Grpc 在k8s中的一些使用

原文链接

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端之间的连接部分