Building a first-class exchange architecture with CoralSequencer

In this article we will explore an architecture employed by some of the most sophisticated electronic exchanges, the ones that need to handle millions of orders per day with ultra-low-latency and high-availability. Most of the exchange main architecture components will be presented as CoralSequencer nodes and discussed through diagrams. The goal of this article is to demonstrate how a total-ordered messaging middleware such as CoralSequencer naturally enables the implementation and control of complex distributed system through a tight integration of all its moving parts. This article doesn’t mention specifics about any exchange’s internal systems and instead talks about the big picture and the general concepts, which will vary from exchange to exchange. Continue reading

CoralSequencer’s structured data serialization framework

CoralSequencer uses its own binary and garbage-free serialization framework to read and write its internal messages. For your application messages, you are free to use any serialization library or binary data model you choose. The fact that CoralSequencer is message agnostic gives you total flexibility in that decision. But you can also consider using CoralSequencer’s native serialization framework described in this article. Continue reading

The Diamond Queue (Demultiplexer to set of threads to Multiplexer)

In this article we present the DiamondQueue, which is nothing more than thread A sending through a demultiplexer a bunch of requests to a fixed set of worker threads, then this set of worker threads sending the results to thread B through a multiplexer. It is important to note that thread A and thread B can be the same thread. The DiamondQueue also supports lanes to enforce message order when needed. Continue reading

State-of-the-Art Distributed Systems with CoralSequencer

In this article we introduce the big picture of CoralSequencer, a full-fledged, ultra-low-latency, high-reliability, software-based middleware for the development of distributed systems based on asynchronous messages. We discuss CoralSequencer’s main parts and how it uses a sophisticated and low-latency protocol to distribute messages across nodes through reliable UDP multicast. Continue reading

Writing a Bitcoin Liquidity Aggregator with CoralMD

In this article we explore how we used CoralMD to write a liquidity aggregator for the Bitcoin market. Most importantly, we show how you can distribute market data to internal applications and to external clients using straightforward and efficient APIs over standard protocols. CoralMD supports three market data APIs on top of HTTP, TCP and FIX as you will see below. Continue reading