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.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to