Tag: System Design
-
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
-
Non-functional Requirements – #1. High Availability, Fault Tolerance
What is Availability? #1. Principles for High Availability #2. Processes for High Availability What is Fault Tolerance? Fault Tolerance vs High Availability Reliability, Resiliency Reference
