SUMMARY. Message-Streams / RSocket-JVM provides very fast GRPC-like & GRPC-compatible services on JVM with rich streaming
model over multiple network transports [1].
MILLIONS. Millions of requests/messages per core
with each interaction (request-response, server-stream, client-stream, bidi-stream, fire-and-forget). Million of simultaneous streams served with commodity PC.
GRPC COMPATIBILITY. High-performance networking with codegen / Protocol Buffers based RPC system having GRPC
compatibility & look-and-feel.
PLUGGABLE NETWORKING. Data center: TCP, unix sockets, VM sockets; internet: GRPC, websockets, websockets-over-http2; control APIs: transcoding to plain old http/json.
MULTIPLE APIS. Request-response with CompletableFuture and virtual threads; traditional streaming with GRPC-stubs (StreamObserver), or reactive with smallrye-mutiny, rxjava, reactor [2].
FLEXIBLE DEPLOYMENT. Operates on hardware ranging from single board computers & mobile (2 cores / 32 MB heap) to cloud hosts (dozens of cores / 32+ GB heap). Both client & server may initiate requests. All internet transports (GRPC, websockets, websockets-over-http2, http/json) may be served over same port.
EFFICIENT. Minimal per-message garbage production. Server graceful close support, coarse scheduler for timeouts,
lean RPC metadata encoding.
LOAD BALANCING. Transparent origin (RPC service) & proxy load estimation for cpu-efficient load
balancers.
API / RUNTIME SEPARATION. Service APIs & RPC stubs (Message-Streams) are decoupled from library runtime (RSocket-JVM), which also
includes network transports, load estimators, load balancers and metrics [3].
TINY FOOTPRINT & NATIVE. On JVM minimal service is <3MB, application image with JRE <50MB, alpine container <60MB. With GraalVM - single native binary <30MB plus instant startup.
EXAMPLES.
Message-Streams-RPC futures example is available at [4],
virtual threads RPC example at [5], all libraries interop plus GRPC examples at [6].
Details in presentation at [7].