All Projects → scalecube → reactor-aeron

scalecube / reactor-aeron

Licence: Apache-2.0 license
A reactive driver for Aeron transport (https://github.com/real-logic/aeron)

Projects that are alternatives of or similar to reactor-aeron

Jocket
Low-latency java socket implementation (using shared memory)
Stars: ✭ 83 (+93.02%)
Mutual labels:  ipc, low-latency, shared-memory
Iceoryx
iceoryx - true zero-copy inter-process-communication
Stars: ✭ 208 (+383.72%)
Mutual labels:  ipc, shared-memory
Traffic Shm
traffic-shm (Anna) is a Java based lock free IPC library.
Stars: ✭ 72 (+67.44%)
Mutual labels:  ipc, shared-memory
LruClockCache
A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.
Stars: ✭ 35 (-18.6%)
Mutual labels:  low-latency, high-throughput
Cpp Ipc
C++ IPC Library: A high-performance inter-process communication using shared memory on Linux/Windows.
Stars: ✭ 420 (+876.74%)
Mutual labels:  ipc, shared-memory
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+1020.93%)
Mutual labels:  ipc, low-latency
Shadesmar
Fast C++ IPC using shared memory (with msgpack)
Stars: ✭ 126 (+193.02%)
Mutual labels:  ipc, shared-memory
Reactor Netty
TCP/HTTP/UDP/QUIC client/server with Reactor over Netty
Stars: ✭ 1,743 (+3953.49%)
Mutual labels:  udp, ipc
Kcp
⚡ KCP - A Fast and Reliable ARQ Protocol
Stars: ✭ 10,473 (+24255.81%)
Mutual labels:  udp, low-latency
Objectdeliverer
ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).
Stars: ✭ 78 (+81.4%)
Mutual labels:  udp, shared-memory
Sharedhashfile
Share Hash Tables With Stable Key Hints Stored In Memory Mapped Files Between Arbitrary Processes
Stars: ✭ 380 (+783.72%)
Mutual labels:  ipc, shared-memory
Ohsce
PHP HI-REL SOCKET TCP/UDP/ICMP/Serial .高可靠性PHP通信&控制框架SOCKET-TCP/UDP/ICMP/硬件Serial-RS232/RS422/RS485 AND MORE!
Stars: ✭ 206 (+379.07%)
Mutual labels:  udp, ipc
Ipc
IPC is a C++ library that provides inter-process communication using shared memory on Windows. A .NET wrapper is available which allows interaction with C++ as well.
Stars: ✭ 332 (+672.09%)
Mutual labels:  ipc, shared-memory
Mappedbus
Mappedbus is a low latency message bus for Java microservices utilizing shared memory. http://mappedbus.io
Stars: ✭ 613 (+1325.58%)
Mutual labels:  ipc, low-latency
Ecal
eCAL - enhanced Communication Abstraction Layer
Stars: ✭ 292 (+579.07%)
Mutual labels:  ipc, shared-memory
SPMC Queue
A simple and efficient single producer multiple consumer queue, suititable for both ITC and IPC.
Stars: ✭ 19 (-55.81%)
Mutual labels:  ipc, low-latency
MPSC Queue
A multi-producer single consumer queue C++ template suitable for async logging with SHM IPC support
Stars: ✭ 51 (+18.6%)
Mutual labels:  low-latency, shared-memory
IPC.Bond
IPC.Bond is an extension of IPC library that provides inter-process communication using shared memory on Windows with Bond serialization.
Stars: ✭ 26 (-39.53%)
Mutual labels:  ipc, shared-memory
socket
Dazzle Async Socket
Stars: ✭ 19 (-55.81%)
Mutual labels:  udp, ipc
Kalm.js
The socket manager
Stars: ✭ 155 (+260.47%)
Mutual labels:  udp, ipc

Reactor Aeron

Reactor Aeron offers non-blocking and backpressure-ready relable UDP clients & servers based on Aeron Efficient reliable UDP unicast, UDP multicast, and IPC message transport. it is inspired by reactor-netty

Getting it

Reactor Aeron requires Java 8 or + to run.

With Maven from Maven Central repositories (stable releases only):

<!-- https://mvnrepository.com/artifact/io.scalecube/scalecube-reactor-aeron -->
<dependency>
    <groupId>io.scalecube</groupId>
    <artifactId>reactor-aeron</artifactId>
    <version>x.y.z</version>
    <type>pom</type>
</dependency>

Getting Started

Here is a very simple server and the corresponding client example

  AeronResources resources = new AeronResources().useTmpDir().start().block();

  AeronServer.create(resources)
    .options("localhost", 13000, 13001)
    .handle(
        connection ->
            connection
                .inbound()
                .receive()
                .asString()
                .log("receive")
                .then(connection.onDispose()))
    .bind()
    .block()
    .onDispose(resources)
    .onDispose()
    .block();
    
    AeronResources resources = new AeronResources().useTmpDir().start().block();

    AeronClient.create(resources)
        .options("localhost", 13000, 13001)
        .handle(
            connection1 -> {
              System.out.println("Handler invoked");
              return connection1
                  .outbound()
                  .sendString(Flux.fromStream(Stream.of("Hello", "world!")).log("send"))
                  .then(connection1.onDispose());
            })
        .connect()
        .block()
        .onDispose(resources)
        .onDispose()
        .block();

Building from Source

$ git clone [email protected]:scalecube/reactor-aeron.git
$ cd reactor-aeron
$ mvn clean install

Performance results

Performance is the key focus. Aeron is designed to be the highest throughput with the lowest and most predictable latency possible of any messaging system.

Benchmark: reactor-aeron vs reactor-netty vs pure-aeron vs rsocket running on AWS C5.xlarge

Code style

See the reference on scalecube site

License

Reactor Aeron is Open Source Software released under the Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].