Simple Binary Encoding (SBE)
SBE is an OSI layer 6 presentation for encoding/decoding messages in binary format to support low-latency applications. The SBE project on GitHub is the reference implementation for the FIX SBE standard for the encoding of financial messages.
SBE provides a compiler for taking a message schema and generating stubs for messaging parsing in multiple languages. Currently Java, C++, and C# (courtesy of Adaptive) are supported. SBE allows allows for the on-the-fly decoding of messages from a compiler generated meta description. Details for using SBE can be found on the Wiki.
Performance is a key requirement for SBE. Performance with consideration to throughput and latency of encoding/decoding binary messages exchanged via a local area network (LAN) of servers which typically have x86 processors. For example, the transmission of financial orders and market data in a co-located environment.
The design follows a number of principles and makes no compromise by adding features that violate these principles. You may find that alternative codecs, such as Protocol Buffers, offer more features. Features such as allowing strings at any location in a message. SBE only allows variable length fields to come at the end of a repeating group or message. SBE makes some restrictions in return for more than an order of magnitude increase in throughput at very low, and importantly, predictable latency.
To get started with with SBE please read the Wiki and then get the latest at:
- Java: Maven Central
- C++: building from source