Functional components
Till now, we have seen how DynamoDB's architecture provides so many features in terms of scalability, fault tolerance, availability, and so on. We also saw how ring membership is maintained and how it helps DynamoDB's desired specialities.
Each DynamoDB node consists of the following components:
- Request coordinator
- Membership and failure detection
- Local persistent store (storage engine)
Request coordinator
The request coordinator is an event-driven messaging component that works like Staged-Even Drive Architecture (SEDA). Here, we break the complex event into multiple stages. This decouples event and thread scheduling from application logic. You can read more about SEDA at www.eecs.harvard.edu/~mdw/proj/seda/. This component is mainly responsible for handling any client requests coming its way.
Suppose a coordinator receives a get
request, then it asks for the data from the respective nodes where the key range lies. It waits till it gets the acceptable number of...