Domain Name System:
Load Balancers: Here, we’ll understand the design of a load balancer, which is used to fairly distribute incoming clients’ requests among a pool of available servers. It also reduces load and can bypass failed servers.
Databases: This building block enables us to store, retrieve, modify, and delete data in connection with different data-processing procedures.
Key-Value Store: It is a non-relational database that stores data in the form of a key-value pair.
Content Delivery Network: In this chapter, we’ll design a content delivery network (CDN) that’s used to keep viral content such as videos, images, audio, and webpages.
Sequencer: In this building block, we’ll focus on the design of a unique IDs generator with a major focus on maintaining causality. It also explains three different methods for generating unique IDs.
Service Monitoring: Monitoring systems are critical in distributed systems because they help analyze the system and alert the stakeholders if a problem occurs.
Distributed Caching: In this building block, we’ll design a distributed caching system where multiple cache servers coordinate to store frequently accessed data.
Distributed Messaging Queue
Publish-Subscribe System: In this building block, we’ll focus on the design of an asynchronous service-to-service communication method called a pub-sub system. It is popular in serverless, microservices architectures and data processing systems.
Rate Limiter: Here, we’ll design a system that throttles incoming requests for a service based on the predefined limit. It is generally used as a defensive layer for services to avoid their excessive usage-whether intended or unintended.
Blob Store: This building block focuses on a storage solution for unstructured data—for example, multimedia files and binary executables.
Distributed Search: A search system takes a query from a user and returns relevant content in a few seconds or less.
Distributed Logging:
Distributed Task Scheduling:
Sharded Counters: