Ich habe zusammengefasst, was ich über gRPC recherchiert habe. Ich habe auch versucht, das offizielle Tutorial auf Python auszuführen.
Ich werde es aktualisieren, sobald ich es berühre.
gRPC ist ein Open-Source-Framework für Remote Procedure Call. gRPC macht die Kommunikation zwischen Client / Server-Anwendungen transparent und einfach zu erstellen.
Es gibt. Ich bin neugierig, schauen Sie sich also die [offizielle Website] an (https://grpc.io/docs/guides/).
Mit gRPC können Sie Remote-Serverfunktionen wie lokal aufrufen, was das Erstellen verteilter Dienste und Anwendungen erleichtert. Da Sie in einer Sprache schreiben können, die gPRC unterstützt, können Sie problemlos einen gPRC-Server in Java, einen Client in Python usw. schreiben. Die Komplexität der Kommunikation zwischen verschiedenen Sprachen wird hier von gPRC behandelt.
Standardmäßig verwendet gPRC einen Protokollpuffer (Sie können auch ein Format wie json verwenden). Der Protokollpuffer wird in einer .proto-Datei definiert, sein Format ist jedoch sehr leicht (3 bis 10 Mal leichter) und schneller (20 bis 100 Mal schneller) als bei XML-Dateien. Wenn Sie die vom Dienst verwendete Methode und die Struktur für den Datenaustausch in dieser .proto-Datei definieren, kann die Serialisierung und Deserialisierung einfach über den Proto-Compiler erfolgen. Infolgedessen werden Accessoren (Klassen) definiert, die in jeder Sprache übertragene Strukturen verarbeiten, und Setter und Getter, die Struktureigenschaften usw. festlegen können, werden ebenfalls ohne Berechtigung erstellt. Durch das Definieren einer .proto-Datei können Sie daher problemlos Dienste auch zwischen Sprachen erstellen und Unterschiede wie die Serialisierung berücksichtigen. Beeindruckend! !!
Versuchen wir also das Tutorial in Python und C ++.
Python Pip installieren, was Sie brauchen.
pip install grpcio grpcio-tools
Zu diesem Zeitpunkt ist die neueste Version möglicherweise nicht enthalten. Überprüfen Sie daher die Version von grpcio
ordnungsgemäß!
Klonen Sie das erforderliche Repository.
git clone -b v1.28.1 https://github.com/grpc/grpc && cd grpc/examples/python/helloworld
Öffnen Sie zwei Klemmen und verwenden Sie eine
python greeter_server.py
Auf der anderen Seite
python greeter_client.py
Ich werde versuchen. Auf der Client-Seite
Greeter client received: Hello, you!
Wenn es herauskommt, ist es ein Erfolg! !!
Fügen wir dem gRPC-Dienst außerdem eine weitere Methode hinzu.
Fügen Sie hier zusätzlich zum ursprünglichen `SayHello
`` `SayHello Again``` hinzu.
examples/protos/helloworld.proto
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
Aktualisieren Sie den Dienst.
Bei examples / python / helloworld
,
python -m grpc_tools.protoc -I../../protos --python_out=. --grpc_python_out=. ../../protos/helloworld.proto
Und
Aktualisieren Sie greeter_server.py
und greeter_client.py
.
greeter_server.py
class Greeter(helloworld_pb2_grpc.GreeterServicer):
def SayHello(self, request, context):
return helloworld_pb2.HelloReply(message='Hello, %s!' % request.name)
def SayHelloAgain(self, request, context):
return helloworld_pb2.HelloReply(message='Hello again, %s!' % request.name)
greeter_client.py
def run():
channel = grpc.insecure_channel('localhost:50051')
stub = helloworld_pb2_grpc.GreeterStub(channel)
response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'))
print("Greeter client received: " + response.message)
response = stub.SayHelloAgain(helloworld_pb2.HelloRequest(name='you'))
print("Greeter client received: " + response.message)
Wenn Sie das oben genannte tun können,
Öffnen Sie zwei Klemmen und verwenden Sie eine
python greeter_server.py
Auf der anderen Seite
python greeter_client.py
Ausführen.
Greeter client received: Hello, you!
Greeter client received: Hello again, you!
Es sollte so herauskommen!
Dieses Mal habe ich gRPC untersucht Ich hoffe, Sie haben das offizielle Tutorial ausgeführt, um ein wenig besseres Verständnis für .proto-Dateien und mehr zu erhalten. Ich werde es weiter aktualisieren, sobald ich verschiedene Dinge ausprobiere oder es in einen anderen Artikel schreibe! !!
Diesmal hier.
Ende.