gRPC 重复字段与流

gRPC repeated field vs stream

您好,我目前正在研究 grpc,我对重复字段与流的用法很好奇。 例如,假设我想为电影座位实施预订服务。我面临的问题是,我想通知服务部门我想为哪部电影预订座位。 我可以想到 2 个解决方案,首先: 我将电影的 ID 与我要预订的每个座位一起发送,或者在流的开头发送一个 像这样:

rpc ReserveSeatsForShowing(stream SeatReservationRequest) returns(Reservation);

message SeatReservationRequest{
    oneof reservationOneOf{
        int32 showingId = 1;
        SeatReservation seatReservation = 2;
    }
}

或者像这样使用重复字段

rpc ReserveSeatsForShowing(SeatReservationRequest) returns(Reservation);

message SeatReservationRequest{
    int32 showingId = 1;
    repeated SeatReservation seatReservation = 2;
}

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

期待您的推荐

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