gRPC für die Kommunikation zwischen Microservices. Protocol Buffers, Streaming und Beispiele in Node.js.
Warum gRPC?¶
- ~10x schnellere Serialisierung (Protobuf vs JSON)
- HTTP/2 Multiplexing
- Bi-directional Streaming
- Generierte Clients aus der Definition
Proto-Definition¶
syntax = "proto3";
service OrderService {
rpc CreateOrder (CreateOrderRequest) returns (Order);
rpc ListOrders (ListRequest) returns (stream Order);
}
message Order {
string id = 1;
string customer_id = 2;
double total = 3;
string status = 4;
}
Node.js-Implementierung¶
// Server
const grpc = require('@grpc/grpc-js');
const proto = grpc.loadPackageDefinition(protoLoader.loadSync('order.proto'));
const server = new grpc.Server();
server.addService(proto.order.OrderService.service, {
createOrder: (call, cb) => {
const order = { id: genId(), ...call.request, status: 'CREATED' };
cb(null, order);
}
});
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {});
Zusammenfassung¶
gRPC ist hervorragend für interne Dienste. Für öffentliche APIs bleiben Sie bei REST/GraphQL.
Brauchen Sie Hilfe bei der Implementierung?¶
Unser Team hat Erfahrung mit dem Entwurf und der Implementierung moderner Architekturen. Wir helfen Ihnen gerne.