2017-06-22 3 views
2

Wir haben einen gRPC-Server in Golang geschrieben. Für einen der RPCs fordern wir Daten von der Google Maps-API gRPC an. Sobald wir eine Antwort vom Google Maps RPC erhalten haben, führen wir einige Berechnungen durch und geben eine Antwort auf den umschließenden RPC (definiert von unserem Server) zurück.Soll ich ein neues oder altes Context-Objekt an die gRPC-API von Drittanbietern auf meinem eigenen gRPC-Server senden?

Natürlich erhalten wir ein Context-Objekt, wenn der RPC auf unserem Server aufgerufen wird.

Meine Frage ist: Sollten wir das gleiche Context-Objekt an die Google Maps RPC übergeben? Oder sollten wir stattdessen ein neues Context-Objekt erstellen (mit context.Background()) und dieses dann an das Google Maps-API weitergeben?

Antwort

2

Der Kontext, den Sie erhalten haben, enthält die Stornierung und die Zeitüberschreitung, daher wäre es gut, denselben Kontext für die Erstellung des neuen RPC zu verwenden. Andernfalls müssen Sie diese Signale manuell übergeben.

Eine Seite auf den Metadaten, Metadaten in dem empfangenen Rahmen nicht automatisch an die neue RPC weitergeleitet werden, siehe:

https://github.com/grpc/grpc-go/issues/1148

https://github.com/grpc/grpc-go/pull/1157

1

Soweit ich festgestellt habe, ist 1 Kontext gültig für den Lebenszyklus von 1 und nur 1 rpc. Sobald wir erkennen, dass wir einen ganz anderen RPC-Call machen, sollten wir einen neuen Kontext schaffen. Die Metadaten des neuen Kontexts können jedoch von den Metadaten des aktuellen Kontexts inspiriert sein. Ein RPC kann hier analog zu einer einzelnen Aktivität/Dienst/Broadcast in Android betrachtet werden.

Verwandte Themen