Liberator is designed to be highly performant - receiving data from external systems at high message rates and fanning it out for delivery to very large numbers of subscribed clients.
Why does Liberator perform so well?
It’s implemented in C allowing for low-level optimisations, and predictable execution times.
It’s optimised for Linux, and uses the Linux low-level i/o libraries and real-time internals effectively. (There are Windows and Mac versions for use in development environments, but for deployment in demanding production systems you need the Linux-based Liberator.)
Its internals are written with speed as a priority for its main data-paths - no over-engineering with excessive levels of abstraction.
RTTP, the protocol used between Liberator and clients, is efficient and not wasteful of bandwidth. This can make a huge difference to server scalability and performance as you add users and increase data rates.
Over the several years of its development, Liberator’s been continually optimised by a highly capable engineering team, driven by demanding usage scenarios in the world of financial trading.
Liberator is benchmarked at Caplin to ensure it performs well, and is scalable, with different user profiles, data profiles and data rates as encountered by our customers. Typical scenarios that we use for the benchmarks include:
A very large numbers of users, all accessing the same or similar small set of instruments that update rapidly (such as FX prices)
Smaller numbers of users, each subscribing to different but very large large sets of instruments that update relatively slowly (such as Corporate Bonds).
When you deploy Liberator in your own particular environment, you’ll need to ensure it performs adequately with your expected user profiles, data profiles and data rates. The first thing to do is consider how many Liberator instances you may need to handle the expected numbers of users and data rates. You can configure the Caplin Platform to use multiple Liberators, Transformers and Integration Adapters as required.