Voldemort v0.9 released: NIO, pipelined FSM routing layer, hinted handoff and more!

Roshan Sumbaly
5 min readintermediate
--
View Original

Overview

The article announces the release of Voldemort v0.9, highlighting significant updates like the transition to non-blocking I/O, a new pipelined finite state machine routing layer, and the introduction of hinted handoff for improved consistency. It emphasizes the growth of Voldemort's user base at LinkedIn and outlines future plans for operational enhancements.

What You'll Learn

1

How to implement a non-blocking I/O approach in distributed systems

2

Why hinted handoff is essential for consistency in distributed databases

3

How to design a pipelined finite state machine for client requests

Prerequisites & Requirements

  • Understanding of distributed systems and key-value stores
  • Experience with Java and client-server architecture(optional)

Key Questions Answered

What are the key features of Voldemort v0.9?
Voldemort v0.9 introduces several key features including a non-blocking I/O implementation, a pipelined finite state machine routing layer, and hinted handoff for improved consistency. These upgrades enhance the performance and reliability of the distributed key-value store, making it more efficient for handling client requests.
How does the new routing layer improve client requests?
The new routing layer models client requests as a pipelined finite state machine, allowing for better management of request states and transitions. This design simplifies the addition of new features and improves the handling of requests, such as implementing hinted handoff for transient failures.
What operational improvements are planned for Voldemort?
Future plans for Voldemort include enhancing operational management tools to simplify cluster migration and rebalancing. This aims to reduce the operational overhead associated with managing multiple small clusters and to support multi-tenancy more effectively.

Key Statistics & Figures

Daily queries handled by Voldemort clusters
over a billion
This statistic highlights the scale at which Voldemort operates, demonstrating its capability to manage high volumes of requests effectively.
Number of stores in production
around 200
This indicates the extensive use of Voldemort across various applications at LinkedIn, showcasing its versatility and reliability.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Backend
Java
Used for developing the client and server-side components of Voldemort.
Data Processing
Hadoop
Utilized for processing large datasets that feed into Voldemort's read-only stores.

Key Actionable Insights

1
Transitioning to a non-blocking I/O model can significantly improve server performance and scalability.
By adopting a non-blocking I/O approach, operations can handle more clients with fewer threads, reducing the need for manual thread management and preventing thread pool exhaustion.
2
Utilizing a pipelined finite state machine for request handling can streamline client-server interactions.
This design allows for easier extension of features and improves the reliability of request processing, making it a valuable pattern for developers working on distributed systems.
3
Implementing hinted handoff can enhance data consistency during transient failures.
This feature allows for backup systems to take over during failures, ensuring that data remains consistent and accessible, which is crucial for maintaining user trust in distributed applications.

Common Pitfalls

1
Failing to manage thread pools effectively can lead to performance bottlenecks.
In distributed systems, if the number of threads is not aligned with the number of clients, it can result in slow responses and thread exhaustion, impacting overall system performance.

Related Concepts

Distributed Systems
Key-value Stores
Non-blocking I/O
Finite State Machines