Upload
konstantin-dmitriev
View
172
Download
0
Embed Size (px)
Citation preview
The fastest Java FIX engine to date
Performance
✔ Zero object allocation/garbage collection in steady state and absence of protocol errors
✔ Lock free, zero copy, small CPU cache footprint
✔ Minimum queuing, TCP send/receive is done on a user thread (preferably affinitised to an isolated CPU core)
Latency
✔ Ultra-low latency at mean and tail percentiles
➢ 400ns latency for a typical FIX message from client code to NIC driver at 50th percentile and sub-500ns for 99.9 percentile
➢ 550ns latency from NIC driver to client code at 50th percentile and 700ns for 99.9 percentile
✔ Latency stamping in key areas for querying
Throughput
✔ Maximum sustainable send throughput 2,669,000 msgs/sec for a typical FIX message; receive throughput 2,213,000 msgs/sec
API
✔ Strongly-typed Message API, all fields are serialized or parsed in session code, thus avoiding hidden latency of second-pass parsing
✔ Message and session API/session configuration optimized for migration from QuickFIXJ with few API exceptions in latency-sensitive areas
Implementation
✔ Written in Java, Java NIO is rewritten as a native library to avoid locking and object allocation
✔ Optimised for Kernel-bypass network libraries, tested with latest SolarFlare/OpenOnload
Tests
✔ Tested on Linux and Windows
✔ Passed LMAX conformance testing
✔ Passed QuickFixJ acceptance test suite
Session Level Configuration
✔ File based or programmatic configuration, e.g. read from database
✔ Support for start/stop date/time scheduling
✔ Full support for FIX protocol versions from 4.0 to 5.0SP2
✔ Full support for Heartbeat, TestRequest, Resend,(Business)Reject, SequenceReset message types
Session Level Configuration (cont.)
✔ Full support for multiple Initiators/Acceptors inside the same application process
✔ Flexible reset options, on Logon/Logout/Disconnect
✔ Session username/password
✔ Support for user-defined fields
Connection options
✔ Support for heartbeats
✔ Logon/Logout timeout
✔ Support for socket options, including TcpNoDelay, low latency options on by default
Connection options (cont.)
Initiator✔ Automatic initiator reconnect
✔ Support for alternative target hosts/ports
Acceptor✔ Sender host/port validation
Message validation (on by default)
✔ Full CompId validation
✔ Full incoming sequence number validation
✔ Check required fields are present in message/header/trailer/repeating groups
✔ Check enum field values are in valid range
Message validation (cont.)
✔ Flexible invalid message rejection (warning/disconnect)
✔ Support for custom FIX specs
Persistence and message resend
Persistence ✔ In/Out sequence numbers
✔ Sent messages
Message resend ✔ Configuration option to suppress the resend
of certain message types
Fault Tolerance
Replication✔ Sequence numbers✔ Sent FIX messages
Replication options✔ Periodic ✔ Asynchronous✔ Synchronous
Initiator leader election protocol
Logging
Prod options✔ File (asynchronous, GC – less)
Dev options (generate GC and/or locking)✔ SLF4J✔ System.out
✔ Ability to disable logging of In/Out/Admin messages
Documentation
User guide✔ QuickStart guide✔ API guide✔ Configuration guide
✔ CrossFix samples project
Planned features
✔ FAST protocol
✔ Load balancing
Q&A