Skip to content

Posts by Peter Lawrey

Improving percentile latencies in Chronicle Queue

Compared to a year ago, we have significantly improved the throughput at which we can achieve the 99%ile (worst one in 100). What tools and tricks did we use to achieve that? What are we testing? Chronicle Queue appends messages to a file while another thread or process can be reading it. This gives you…

Read More

Best practices for Event Sourcing

David Schmitz presented an excellent talk on what he sees as best practices in using Event Sourcing. Chronicle Software has two very different event sourcing frameworks Chronicle Microservices Framework (CMF) and Chronicle Decentred. This talk is useful in highlighting how they differ with each other and other Event Sourcing solutions. CMF is built on Chronicle Queue and is designed for low latency…

Read More

Object Pools Revisited

Object pools were popular before Java 5.0, however, more efficient allocation made most of these pools a needless complication. Can an Object Pool still make sense and how fast do they need to be? Overview Up to Java 5.0 using object pools could significantly improve performance. However, from Java 5.0, the cost of using naive…

Read More

StringBuffer and how hard it is to get rid of legacy code

In 2006, Java 5.0 was released with StringBuilder, a more lightweight and sane version of StringBuffer. The Javadoc for Java 5.0 for StringBuffer notes As of release JDK 5, this class has been supplemented with an equivalent class designed for use by a single thread, StringBuilder. The StringBuilder class should generally be used in preference…

Read More

What’s the difference between blockchain and traditional databases?

The key difference between blockchain and traditional databases is the level of trust needed in those running the service. With blockchain, you trust the protocol, not those running it. What does a blockchain do? A blockchain records transactions without needing to trust any individual, organisation or computer, in a tamper-proof way (or pretty close). This…

Read More

Micro-services for performance

Overview Microservices is a buzz word at the moment. Is it really something original or based on established best practices? There are some disadvantages to the way microservices have been implemented, but can these be solved? Component testability and consistency Once you have assembled a large system, it can be hard or even impossible to…

Read More