Babl is a high-performance, scalable web-socket server designed for use in low-latency applications.
Built from the ground up to provide blazing fast execution speeds, and featuring a novel auto-scaling mechanism, Babl will comfortably handle high throughput, large session-count workloads without slowing down.
Using an event-driven reactive programming model, your application code is executed in an allocation-free, lock-free event-loop for maximum efficiency and mechanical sympathy.
Babl is particularly well suited to financial or crypto-currency exchanges, where clients may be connecting to APIs using their own web-socket clients and latency is a key differentiator.
Babl is a container for your application, providing a high-performance proxy for web-socket connections.
Your application will be notified of connection lifecycle events (
and receive messages (
onMessage) from client connections.
Your application will publish responses to inbound messages, which will be sent back to the client.
For more information, see Application.
Use case: Market Data Distributor
In this example, an exchange publishes market data over an IP multicast network to multiple instances
of Babl Server. Each instance contains a single Application (containing business logic such
as market data subscriptions), and multiple Session Containers.
The Application publishes market data updates to the Sessions via a local IPC bus, where they are distributed to the trading algos or other clients over TCP using the web socket protocol.
This architecture allows the number of server instances to be scaled horizontally as demand grows. Multi-core machines can also be utilised to run several Session Containers per server, making efficient use of available CPU cores without the overhead of contention.
Babl can encode over 40 million frames per second, per Session Container.
The garbage-free design means that in-server latency should be less than 100 microseconds at the 99th percentile.
See the Getting Started guide for more information.