Skip to content
gqlxj1987's Blog
Go back

Grpc 在k8s中的一些使用

Edit page

原文链接

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


Edit page
Share this post on:

Previous Post
Rust + Lua
Next Post
Go Modules初探