Using individual RPCs for each message is fine. If, however, you are trying to get better performance on the server (not in transfer rates, but in processing rates), using a longer-lived bidi stream could be useful.
As I discussed in my KubeCon talk <https://kccna18.sched.com/event/GrWo/using-grpc-for-long-lived-and-streaming-rpcs-eric-anderson-google> (slides are near "PDF" and video is "link to session recording"), longer-lived bidi streams are harder to use and open you to different problems. Long-lived RPCs in particular can require special care. So make sure you are solving a big enough problem by using such streams, so that you don't introduce complexity for little gain. That isn't to say "don't use long-lived, bidi streams." Long-lived, bidi streams are a life-saver in some cases. Just make sure it is worth it. At the bare minimum, on the client you would need to manually handle the bidi stream getting closed/killed, would likely want to enable keepalive, and probably would also need acks back from the server. If you don't get an ack for a message before the stream goes down, you'd have to re-send it. On server-side, it is commonly good to close the connection occasionally to spread load. It's easiest to send a response to the client asking it to close the stream, so that you don't lose messages (when server closes, messages the client sends will be lost). On Thu, Apr 25, 2019 at 10:43 PM tal bahalool <[email protected]> wrote: > Hi Eric, > I have server that expose bidirectional method and i need to generate > client that will send messages of max 5MB every 1-2 seconds. > > Currently i'm creating client, and saving the instance as a member in my > class and then for each message i'm calling rpc bidi method. > > I wonder if i need to call the rpc bidi method once in start (process > startup) and then save the full duplex instance as class member and when > message arrive just to call to the "write" method and when process go down > call "end". > > 1. what is the best practice in my case? performance issue > 2. the connection to server start once when client created both cases? > (just to be sure) > > ** i'm using javascript client > Thanks! > > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CA%2B4M1oOar6U8eyLSSFs8Lv0YjYROL2Uam4AUZYcrEzxEPPuxdw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
smime.p7s
Description: S/MIME Cryptographic Signature
