Erste Beta von Googles gRPC verfĂĽgbar
Das sprach- und plattformneutrale RPC-Framework soll die Entwicklung verteilter Anwendungen vereinfachen. Es ist quelloffen und setzt konsequent auf Standards.
Google hatte bereits seit langer Zeit eine eigene RPC-Infrastruktur (Remote Procedure Call) namens Stubby, um die zahlreichen Microservices auf den verteilten Servern zu verbinden. Das Unternehmen hat durchaus positive Erfahrungen damit, seine eigene Techniken als Open-Source-Software zu veröffentlichen und so auch von der Community bei der Entwicklung neuer Techniken zu profitieren. Beim Blick auf Stubby kamen die Entwickler jedoch zu dem Schluss, dass es für eine Veröffentlichung zu eng mit Googles Infrastruktur verknüpft war und zu wenig auf Standards beruhte. Daher war für gRPC ein Neustart nötig, der sich an Standards orientiert. Eine Nachricht auf der gRPC-Site erklärt die Motivation für das Projekt.
Offen in alle Richtungen
gRPC setzt auf Microservices und vermeidet dabei explizit verteilte Objekte mit Verweis auf den renommierten Autor und Referenten Martin Fowler. Gleichzeitig sollen die grundlegenden Funktionen für alle offen sein und die Bestandteile als Open Source veröffentlicht werden. Das System unterstützt zahlreiche Plattformen und bereits jetzt einen umfangreichen Sprachkatalog: C++, Java, Go, Python, Ruby, Node.js, Android Java, C#, Objective-C und PHP sind in der Dokumentation gelistet.
Das Prinzip ist mehr oder weniger dasselbe wie bei anderen RPC-Systemen: Ein Service implementiert einen gRPC-Server und die Clients einen dazu passenden Stub mit denselben Methoden, Parametern und RĂĽckgabetyp-Definitionen. Die Client-Anwendung ruft die Funktion im Stub auf, der daraufhin eine Anfrage an den Server schickt, auf dem die eigentliche Methode ausgefĂĽhrt wird. Dieser schickt wiederum die Antwort an den Stub zurĂĽck, der sie an die Client-Anwendung als RĂĽckgabewert weitergibt. Auf die Weise integrieren Entwickler die entfernten Methoden so wie lokale.
Abstrakt und konkret
Auch beim Nachrichtenformat ist das System offen: Standardmäßig läuft die Kommunikation über Googles Protocol Buffers. Alternativ dürfen die Nachrichten auch in JSON, XML oder Thrift verfasst sein. Das gRPC-Protokoll zur Kommunikation spezifiziert die abstrakte Kommunikation. Eine Anleitung erklärt die Implementierung über HTTP/2. Die Quellen der Bibliotheken für die unterschiedlichen Sprachen stehen auf GitHub zum Herunterladen. (rme)