ARTICLE OF THE MONTH
Java is Very Fast, If You Don’t Create Many Objects
This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we aim to avoid object allocations.
Does not allocating really make such a difference?
CHRONICLE FIX
Much More Than a Quick Fix
Chronicle FIX has been built from the ground up by low-latency experts to be as fast as possible and leverages many ingenious techniques and patterns, some of which we believe are unique in the industry.
CHRONICLE QUEUE ENTERPRISE
Reducing Tail Latencies with Chronicle Queue Enterprise
Persistent queue solutions are frequently used when designing low-latency applications. However high sustained message rates, or bursty workloads, can lead to delays caused by the OS or hardware which are challenging, but not impossible, to mitigate.
- All
- Chronicle FIX
- Chronicle Queue
- Chronicle Services
- Cloud
- Event Driven
- Low-Latency
- Throughput
- Tune
- wire
Introduction In distributed, microservice based applications the management of state is one of the most important, yet difficult aspects of design. Ensuring the accuracy and consistency of state without introducing…
This article explores how Chronicle Services provides empowering failover strategies for uninterrupted operations.
The practices of Event-Driven Architecture and Behaviour-Driven Development have more in common than may at first be apparent. At Chronicle, we have embraced both of these approaches and implemented them through our Chronicle Services Framework.
In this article, we will explore the ideas behind Events in Chronicle Services in more detail, and how to build a service that works with Events carrying structured data.
Understanding memory management in Java, and particularly the role of object allocation is essential when optimising system performance. In Java, memory management is an automatic process that is managed by…
Low Latency? In computing, latency is defined as the length of time to perform some task. This could be the time it takes to respond to an interrupt from…
In this series of articles, we will explore Chronicle Services through a number of worked examples, each illustrating a specific feature of the framework.
Have you realised that 99% of your system’s latency might be due to accidental complexity? In this article we will look at a real life example of accidental complexity…
Event-Driven Architecture (EDA) is a design principle focused on the creation, detection, and reaction to events. Renowned for its resilience and low latency, EDA is a reliable choice for developing…
Chronicle Queue Released for Linux ARM64 Chronicle Queue Chronicle Queue is a persisted low-latency messaging framework for high performance and critical applications. Designed to be a “record everything store” Chronicle…
Please join the discussion of the answers for these questions on Twitter – eight core Java Questions.
Key Takeaways Data consistency is critical when communicating between software components on different machines to ensure information remains in tact. Low-latency data exchange requires a different approach than common formats….
A multi-language offering We’re excited to announce that Chronicle Queue Enterprise is now available in multiple programming languages to ensure maximum user flexibility and interoperability with other data processing…
What are the challenges of tuning your CPU and system for optimal performance with Linux, and how does Chronicle Tune address them? CPU isolation and efficient system management are…
The Challenges of Building a FIX Engine The first day I was introduced to FIX was when I worked at an investment bank in London as a developer; I was…
At Chronicle we build applications that must process very high numbers of events with minimum latency. Generating unique IDs for these events using the traditional method of UUIDs introduces an…
This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we aim to avoid object…
Chronicle’s open source Chronicle Threads library has a little known feature which is one of the first tools I get from my bag if a client reports that they are…
Chronicle Services is a framework for building Event-driven microservices. Microservices built with Chronicle Services are efficient, easy to build, test, and maintain. Equally important they provide exceptional high-throughput and low…
Typically in low-latency development, a trade-off must be made between minimising latency and avoiding excessive CPU utilisation. This article explores how Chronicle’s Pausers can be used to automatically apply a…
Introduction I have lost count of the number of times I have been told that Java is not a suitable language in which to develop applications where performance is a…
Unix has been around for more than 50 years, and the original design principles must be good enough for it (and its derivative, Linux) to be the most widely used…
A significant feature of Chronicle Queue Enterprise is support for TCP replication across multiple servers to ensure high availability of application infrastructure. I have generally held the view that replicating…
In application development, microservices is an architectural style where larger applications are structured as a collection of smaller, independent, yet interconnected services. While this allows for highly maintainable and testable…
Many of our customers have upgraded from QuickFIX/J to Chronicle FIX and this article provides some background as to why. Introduction QuickFIX/J is free, accessible, supports the FIX standard and…
A high level of availability of IT services is crucial to prevent disruptions of service that can lead to financial losses, business opportunity losses, data loss, and reputational damage. A…
At Chronicle, we know that efficient code doesn’t just run faster; if it’s using less compute-resource, it may also be cheaper to run. In particular, distributed cloud applications can benefit…
GitHub Issues are convenient since they come bundled with a GitHub repository. Many companies are exploring this tool as an alternative to full-featured issue tracker such as Atlassian JIRA. Complex…
Following the Hello World example of a simple, independently deployable real-time Event-Driven Microservice, this article looks at a more realistic example of an Order Processor with a New Order Single…
On Linux, you can create sparse files, where only the pages (of 4 KiB) that are touched utilise either memory or disk space. This allows you to memory map large…
Unit testing constitutes an integral part of the process of providing high-quality software. But, how can one write tests covering all variants of several operations? Read this article and learn…
Event-driven microservices can be straightforward to describe before they are implemented, tested and maintained. They are also highly responsive to new information in real time, with latencies in Java of…
One subject that often evokes a lot of debate is which is the best OS to develop a Java application on. This article gives my view on the issue. …
Behaviour Driven Development (BDD) and Event Driven Architecture (EDA) work well together as they complement each other’s strengths and weaknesses. Using both can result in a shorter time to market…
How is a high-performance, low-latency Java application affected by the JVM version used? Every nanosecond counts for trading and other applications where messages between two different threads are exchanged in…
Last year we had a global shortage of microchips; today, I feel there is a worldwide shortage of software developers. Like many other software companies, Chronicle Software is rapidly expanding…
…The Fewer the Words, the Greater the Profit.” These wise words were written by François Fénelon, a writer and theologian living during the 17th century. This is an article summarising…
Most Kafka benchmarks appear to test high throughput but not low latency. Kafka was traditionally used for high throughput rather than latency-sensitive messaging, but it does have a low-latency configuration….
Traditionally, companies with low-latency requirements deployed to bare metal servers, eschewing the convenience and programmability of virtualisation and containerisation in an effort to squeeze maximum performance and minimal latency from…
While the cloud offers great convenience and flexibility, the operational cost for applications deployed in the cloud can sometimes be significant. This article shows a way to substantially reduce operating…
This article explores how to use method chaining to add routing information to serialised data structures in a lightweight fashion, where the routing information can be read separately by an…
A Load Balancer, FIX Version Translator, and Rule-based Drop Copy FIX (Financial Information eXchange) protocol was developed to provide a reliable and high-speed exchange of transaction information between trading parties….
This article explores the Challenges in developing a Graphical User Interface (GUI) for Financial Information eXchange (FIX) data. FIX is both a protocol and a message format, but to create…
In a previous article I described a way to organise low-latency products as multiple code bases which are bound together with a Maven Bill of Materials (BOM). Understandably, this requires…
A Discussion On the Benefits of Event Loops in Java. When I was working in software development back in the 1990s, nearly all the software libraries that I worked on…
Last month, I wrote an article on Open source Chronicle Wire, that discusses how we could serialise an application’s state into different message formats. Now in this article, I’m going…
Apache Kafka is a common choice for inter-service communication. Kafka facilitates the parallel processing of messages and is a good choice for log aggregation. Kafka claims to be low latency,…
There are things you can do in Java you rarely see, generally because there is no use for it. However, there are some unusual things in Java that could be…
Using Trivially Copyable Objects to Improve Java Serialisation Speeds For any low-latency software it is vital that the most common operations introduce minimal latency. For example, in trading software, one…
This article elaborates on different ways of serializing Java objects and benchmarks performance for the variants. Read this article and become aware of different ways to improve Java serialization performance….
Persistent queue solutions are frequently used when designing low-latency applications. The problem is that high sustained message rates, or bursty workloads, can lead to delays caused by the OS or…
Become familiar with the art of object reuse by reading this article and learn the pros and cons of different reuse strategies in a multi-threaded Java application. This allows you…
Queues are often fundamental components in software design patterns. But, what if there are millions of messages received every second and multi-process consumers need to be able to read the…
Java serialization is a popular mechanism where you are able to serialize and deserialize complex object graphs; for example where object A can contain a reference to object B, which…
In low-latency applications, the creation of unnecessary objects is often avoided by reusing mutable objects to reduce memory pressure and thus the load on the garbage collector. This makes the…
I wrote an article on low latency microservices almost five years ago now. Chronicle Software has worked with a number of tier one investment banks to implement and support those systems….
During most of my development career, the usual code organization pattern was monolithic repository or Monorepo. There is a single large version control repository, to which all developers on the…