A lightning-fast binary protocol for distributed applications and microservices

What is ActiveRPC?

ActiveRPC is a lightweight and convenient Java library for developing high-load distributed applications and Memcached-like solutions. It introduces a completely alternative approach to microservices implementation and overcomes the overheads of utilizing HTTP protocol with JSON or XML encoding. ActiveRPC is powered by world's fastest JVM serializer ActiveSerializer, runs on TCP, and has a custom high-performance binary streaming protocol. Along with that, ActiveRPC features built-in commonly used RPC strategies and high fault tolerance.

Why ActiveRPC?

Outstanding performance

Create microservices that can handle up to ~15M requests per second on a single CPU core

Convenient

Wide range of RPC strategies (first available, round-robin, rendezvous hashing, etc.) that can be simply combined

Reliable

Fault tolerance with re-connections to fallback and replica servers

Flexible

Ideal for near-real time servers with application-specific business logic

Asynchronous binary RPC protocol with extensive cloud strategies

ActiveRPC features highly optimized flexible server and client implementation along with predefined cloud strategies. With these technologies you can conveniently create even complex scalable solutions like high-performance microservices or Memcached-like servers.
RpcServer rpcServer(Eventloop eventloop) {
	return RpcServer.create(eventloop)
		.withMessageTypes(String.class)
		.withHandler(String.class, String.class,
				request -> Promise.of("Hello " + request))
		.withListenPort(SERVICE_PORT);
}

RpcClient rpcClient(Eventloop eventloop) {
	return RpcClient.create(eventloop)
		.withMessageTypes(String.class)
		.withStrategy(server(new InetSocketAddress(SERVICE_PORT)));
}

Benchmarks

We’ve measured ActiveRPC performance in a basic scenario (client sends an Integer, server returns a Promise of the Integer multiplied by two). We've also measured performance for a Memcached-like scenario.

RPC
ActiveRPC - 14.9 Mrps
RPC
14.9 Mrps
Memcached
PUT - 9.5 Mrps
GET - 9.7 Mrps
PUT
9.5 Mrps
GET
9.7 Mrps

Benchmarks were launched on a machine with the following parameters: Ubuntu 18.04 bionic, Kernel: x86_64 Linux 4.15.0-55-generic, CPU: Intel Core i5-8400 @ 6x 4GHz [27.8°C]. You can find benchmark sources on GitHub.

Add ActiveRPC to your project

You can add ActiveRPC to your project by importing its Maven repository.
These docs cover the most recent ActiveRPC release which is v2.2, published Sep 11, 2020 (see on Github).

Project background

ActiveRPC is one of the ActiveJ technologies that also include cloud solutions, lightning-fast serializers, bytecode generators and others. To learn more, visit website of the ActiveJ platform.