Building Low Latency Microservices

Peter Lawrey, presents at the 2016 Goto in Chicago .

The presentation begins around the concepts of meeting low latency trading requirements without using a monolithic infrastructure, Peter discusses how low latency microservices operate and how they receives events from a source of data that contains the complete history of all events and operates in an append-only manner. The low latency microservice reacts to the events, processes the input data, and generates output data. In many cases, the function is stateless: all required information is derived from the input events. However, in some cases efficiency is gained by maintaining some state between transactions. High performance and low latency are the objectives that determine whether a particular Chronicle service maintains some state or is stateless. If state is maintained, it can be persisted to reduce start-up time the next time the service is launched.

Chronicle’s software is highly optimized Java, employing techniques that minimize operating system overhead and Java Garbage Collection (the objective is zero GC). The low latency microservices in Java  are single-threaded, eliminating the need for thread management, locks, signals, polls of thread state, etc. This produces a deterministic and reproducible result (critical for replicating and debugging problems), while also increasing throughput and decreasing latency.

In the presentation Peter explains about a Lambda architecture and how the low latency microservices function receives events from a source of data that contains the complete history of all events and operates in an append-only manner. The microservice reacts to the events, processes the input data, and generates output data. In many cases, the function is stateless: all required information is derived from the input events. However, in some cases efficiency is gained by maintaining some state between transactions. High performance and low latency are the objectives that determine whether a particular Chronicle service maintains some state or is stateless. If state is maintained, it can be persisted to reduce start-up time the next time the service is launched.

There is also examples of how to produce a stateful Lambda plus some code excerpts

The presentation moves onto gives an indepth overview of the Interprocess transport used between the low latency microservices which in this case is Chronicle Queue and Peter illustrates how the benchmarks can be performed using a Java Microbenchmark Harness, he finally discusses the lack of flow control in Chronicle Queue and how this can help with low latency trading and benchmarking

 

 

 

 

Want access to exclusive Chronicle content?

The Chronicle Community is now live, hit the button below and join the community, for free! You'll get exclusive access to blogs, guides and video content. Join today!

Want more from Chronicle? Subscribe today!

Something went wrong. Please check your entries and try again.