SUMMARY. Message-Streams / RSocket-JVM is 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 model. 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.
MULTIPLE APIS. Request-response with CompletableFuture and virtual threads; traditional streaming with GRPC-stubs (StreamObserver), or reactive with smallrye-mutiny, rxjava, reactor [2].
PLUGGABLE NETWORKING. Data center: TCP, unix sockets, VM sockets; internet: GRPC, websockets, websockets-over-http2; control APIs: transcoding to plain old http/json.
FLEXIBLE DEPLOYMENT. Both client & server may initiate requests. All internet transports (GRPC, websockets, websockets-over-http2, http/json) may be served over same port.
API / RUNTIME SEPARATION. Service APIs & RPC stubs (Message-Streams) are decoupled from library runtime, which also includes network transports, load estimators, load balancers and metrics [3].
EFFICIENT. Minimal per-message garbage production. Server graceful close support, coarse scheduler for timeouts, lightweight keep-alives. Lean RPC and client metadata encoding.
LOAD BALANCING. Transparent origin (RPC) & proxy load estimation for cpu-efficient load balancers.
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].