A lightning-fast binary protocol for distributed applications and microservices

What is ActiveRPC?

ActiveRPC is a highly-efficient and convenient Java library for developing high-load distributed applications and Memcached-like solutions.

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 with extensive cloud strategies

ActiveRPC features highly optimized flexible servers and clients 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

To use ActiveRPC in your project, simply import its Maven repository to your project. Please note that ActiveRPC depends on tiny active-jmxapi tool (optional), lz4, and ActiveJ platform, the core ActiveJ technology.
<dependency>
    <groupId>io.active</groupId>
    <artifactId>activej-rpc</artifactId>
    <version>1.0</version>
</dependency>

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.