Category: System Design
-
Full and empty queue problems
When there are Producer, Bounded Queue, and Consumer, Full queue problems and solutions If queue gets full because the retrieval rate cannot follow up the arrival rate, there are couple ways to resolve it. #1. Load Shedding #2. Rate Limiting #3. Backpressure #4. Elastic Scaling Empty queue problems and solutions…
-
Data Encoding Formats
For message to be transferred, it needs a process called ‘serialization’ and ‘deserialization’. Data Formats 1. Textual formats 2. Binary formats Backward compatibility is important for distributed systems. Reference
-
Blocking vs Non-Blocking I/O
Socket Socket is an endpoint which is combination of IP address and port number. From client <-> server, each end of connection has a socket. Server usually has a port that’s opened for making connection (e.g. port 80). Then, when client tries to connect with the server, client assigns a…
-
Network Protocols
Network protocols are a set of rules that define how to transmit and receive data #1. TCP TCP prioritizes reliability over time. #2. UDP UDP prioritizes time over reliability. UDP is mostly used for video/audio live streaming or online games, where latency is a critical concern and we can afford…
-
Asynchronous Messaging Pattern
Asynchronous messaging pattern is a pattern that utilizes message queue. Types #1. Competing consumers #2. Request/Response messaging #3. Priority queue #4. Clain check Reference
-
Non-functional Requirements – #5. Consistency
Consistency Models To resolve the drawbacks of Linearizability/Eventual Consistency model, 3 different models have come up. Reference
-
Non-functional Requirements – #4. Durability
Definition How to support durability? 2. RAID 3. Replication Checksum Note Reference
-
Non-functional Requirements – #3. Performance
Response Time Latency How to calculate Latency? Throughput Bandwidth Reference
-
Non-functional Requirements – #2. Scalability
Scalability – Vertical Scaling & Horizontal Scaling Elasticity Reference
