Sind channel / stubs in gRPC threadsicher?

8

Wenn ich gRPC aus Java verwende, kann ich Stubs (Clients) zwischenspeichern und sie in einer Multithread-Umgebung aufrufen oder sind die Kanäle threadsicher und können sicher zwischengespeichert werden?

Wenn es einen Netzwerkausfall gibt, sollte ich den Kanal neu erstellen oder er ist intelligent genug, um die Verbindung wiederherzustellen? Ich konnte keine relevanten Informationen über Ссылка

finden

Danke

    
julius 18.10.2015, 11:56
quelle

1 Antwort

10

Beantworten Sie die erste Frage:

Kanäle sind threadsicher; io.grpc.Channel ist mit @ThreadSafe annotation gekennzeichnet. Stubs sind auch Thread-sicher, weshalb die Rekonfiguration einen neuen Stub erzeugt.

Beantworten Sie die zweite Frage:

Wenn ein Netzwerkausfall vorliegt, müssen Sie den Kanal nicht neu erstellen. Der Kanal wird wieder mit dem exponentiellen Backoff verbunden, ungefähr wie im Verbindungs-Backoff -Dokument beschrieben . Java entspricht diesem Algorithmus nicht zu 100%, da es die Verbindungstimeouts in späteren Versuchen nicht erhöht. (Nicht zu verwechseln mit dem exponentiellen Backoff, der implementiert wird.)

Als kleines "Gotcha" passiert DNS-Auflösung mit netty (v0.9.0), wenn der Kanal erstellt wird, und wird später nicht erneut ausgeführt. Die nächste Version sollte dieses Problem nicht haben.

    
Eric Anderson 19.10.2015, 16:23
quelle

Tags und Links