System Design questions and solutions
Components of System Design Below are some of the major components of the System Design. discussed in brief. The detailed version of this will be discussed in different posts:
Most crucial component for scalability, availability, and performance measures for systems.
It is a storage system similar to hashtables where key-value stores are distributed hash tables.
Blob stands for binary large objects, as the name suggests is storage for unstructured data such as YouTube, and Netflix.
It is an organized collection of data so that they can be easily accessed and modified.
These sets the maximum number of requests a service can fulfill.
These are basically software where system administrator monitor infrastructures such as bandwidth, CPU, routers, switches, etc.
Transaction medium between producers and consumers.
In the case of large distributed systems, every moment multiple tasks are occurring so in order to distinguish it assign a tag corresponding to every event.
Over every website, crucial information that visitors will seek is put into the search bar.
Tracing sequences of events from end to end.
Computational resources such as CPU, memory, storage, etc.
System Design mostly follows the following principles
- CAP (Consistency, Availability, Partition Tolerance)
- BASE (Basically Available, Soft State, Eventual Consistency)
- SOLID
- KISS (Keep It Simple, Stupid!)
CAP theorem states that any distributed data store can only provide two of the following three guarantees:
- Consistency - Every read receives the most recent write or an error.
- Availability - Every request receives a response.
- Partition tolerance - The system continues to operate in network faults.
The ACID (Atomicity-Consistency-Isolation-Durability) model used in relational databases is too strict for NoSQL databases. The BASE principle offers more flexibility, choosing availability over consistency. It states that the states will eventually be consistent.
SOLID principle is quite famous in OOP. There are 5 components to it.
- SRP (Single Responsibility Principle)
- OCP (Open Close Principle)
- LSP (Liskov Substitution Principle)
- ISP (Interface Segregation Principle)
- DIP (Dependency Inversion Principle)
"Keep it simple, stupid!" is a design principle first noted by the U.S. Navy in 1960. It states that most systems work best if they are kept simple.