gRPC 重复字段与流

Fel*_*oll 5 service proto grpc

您好,我目前正在研究 grpc,并且对重复字段与流的使用情况感到好奇。例如,假设我想实现电影座位预订服务。我面临的问题是,我想通知服务人员我想预订哪部电影的座位。我可以想到两种解决方案,首先:我将电影的 id 与我想要预订的每个座位一起发送,或者在流的开头发送一个,如下所示:

rpc ReserveSeatsForShowing(stream SeatReservationRequest) returns(Reservation);

message SeatReservationRequest{
    oneof reservationOneOf{
        int32 showingId = 1;
        SeatReservation seatReservation = 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者使用像这样的重复字段

rpc ReserveSeatsForShowing(SeatReservationRequest) returns(Reservation);

message SeatReservationRequest{
    int32 showingId = 1;
    repeated SeatReservation seatReservation = 2;
}
Run Code Online (Sandbox Code Playgroud)

因为我之前没有真正使用过 grpc,所以不太确定该选择哪个选项或者是否有其他选项可用。

期待您的推荐

cre*_*oup 2

对于座位预订,我认为使用重复字段是有意义的。就像现实世界的场景一样,请求就像“我想要电影 X 的座位 A、B、C”,这更像是重复的方式而不是流式传输。因此,有效载荷非常小。此外,这种方式应该使用更少的服务器资源,因为它是一个批处理过程。