Acronyms
-
FIX Protocol - Financial Information Exchange Protocol
-
HFT - High-Frequency Trading
What does Low Latency mean
- Latency is a time interval between the stimulation and response, or, from
a more general point of view, a time delay between the cause and the effect of some physical change in the system being observed.
- Low latency describes a computer network that is optimized to process a
very high volume of data messages with minimal delay (latency).
Designing for low latency in Java Programming Language
- Detailed knowledge of the Java memory model and techniques to avoid unnecessary
garbage collection (e.g via object pooling) is very important. Some of the techniques used might typically be regarded as “anti-patterns” in a traditional OO-environment.
-
Detailed knowledge of TCP/IP and UDP multicast including utilities for debugging and measuring latency (e.g. DTrace on Solaris).
-
Experience with profiling applications.
-
Knowledge of the java.nio package, experience developing NIO-based scalable server applications, experience designing wire protocols. Also note that we typically avoid using frameworks and external libraries (e.g. Google Protobuf), preferring to write a lot of bespoke code.
-
Knowledge of FIX Protocol
=========== TO DO =========== Very Important - Read link first link below and add https://www.linkedin.com/pulse/what-ive-learned-after-coding-hft-low-latency-systems-ariel
Multicast, UDP, reliable multicast, Kernel bypass (supported by Java 7, Informatica Ultra Messaging, and many others) on Infiniband networks are some common technologies used by all companies in this field. http://code.google.com/p/disruptor/
pre-allocate objects(i.e use flyweight design pattern), use primitive objects