CoralReactor is a powerful, easy to use and ultra-low-latency Java library for network communication with zero garbage creation and minimal variance. Moreover, what stands out about CoralReactor is its simplicity. In this article we will demonstrate some examples of clients and servers to get you started with CoralReactor. Continue reading
CoralReactor
CoralReactor is a powerful, ultra-low-latency, asynchronous, non-blocking, network I/O library that delivers high performance through a simple API. You can code multiple clients and servers (UDP or TCP) that run inside the same reactor thread which is optimized to the last bit for speed. Moreover, CoralReactor allows you to handle billions of messages without producing any garbage for the GC. The average one-way latency for a 256-byte message over loopback is under 2 micros, which is approximately 10 times faster than the standard JDK classes.
|
CoralReactor Performance Numbers
In this article we present the CoralReactor UDP and TCP latency numbers when two separate JVMs exchange messages over loopback. Continue reading
Tick-to-Trade Latency Numbers using CoralFIX and CoralReactor
In this article we use wireshark and tcpdump to analyze the latency numbers of a test trading strategy that receives a market data tick through UDP using CoralReactor and places a trade order through FIX using CoralFIX. Continue reading
CoralReactor vs Netty Performance Comparison
In this article we compare CoralReactor and Netty in terms of performance to show that CoralReactor is 10 times faster and produces zero garbage. Continue reading
CoralReactor vs Vert.x Performance Comparison
In this article we write two identical http servers using CoralReactor and Vert.x and compare their throughput and latency for different number of simultaneous connections. Continue reading
Inter-thread communication within CoralReactor
CoralReactor was built on purpose, from the ground up, to be single-threaded. That means that no other thread besides the reactor thread should be executing any code or accessing any data belonging to servers and clients. This not only provides super-fast performance but also allows for much simpler code that does not have to worry about thread synchronization, lock contention, race-conditions, deadlocks, thread starvation and many other pitfalls of multithreaded programming. However there are common scenarios where other threads must interact with the reactor thread. In this article we analyze in detail how this is done, without breaking the single-threaded design principle and without creating any garbage. Continue reading
SSL Support in CoralReactor through SSLSocketChannel
CoralReactor implements its own non-blocking SSLSocketChannel
so you can have out-of-box support for SSL. In this article we show how you can connect to a SSL server (https, wss, etc.) easily with a CoralReactor client. Continue reading
Architecture Case Study #1: CoralReactor + CoralQueue
You need a high throughput application capable of handling thousands of client connections simultaneously but some client requests might take long to process for whatever reason. How can that be done in an efficient way without impacting other connected clients and without leaving the application unresponsive for new client connections? Continue reading
Handling Socket Lagging during Write Operations
A common problem when working with non-blocking sockets it that a client may lag when the send rate is too high, in other words, the client will push out messages faster then the network card can send and/or the other side’s network card can receive them. That will cause the underlying write socket buffer at the OS/Kernel level to fill up. In this article we explain how CoralReactor handles this complex scenario in a simple way so that you don’t have to worry about it. Continue reading