More on this book
Community
Kindle Notes & Highlights
Consider using cache when data is read frequently but modified infrequently.
Each web server in the cluster can access state data from databases. This is called stateless web tier.
To further scale our system, we need to decouple different components of the system so they can be scaled independently. Messaging queue is a key strategy employed by many real-world distributed systems to solve this problem.
A message queue is a durable component, stored in memory, that supports asynchronous communication. It serves as a buffer and distributes asynchronous requests.
When choosing a sharding key, one of the most important criteria is to choose a key that can evenly distributed data.
•Keep web tier stateless •Build redundancy at every tier •Cache data as much as you can •Support multiple data centers •Host static assets in CDN •Scale your data tier by sharding •Split tiers into individual services •Monitor your system and use automation tools
According to Jeff Dean, Google Senior Fellow, “back-of-the-envelope calculations are estimates you create using a combination of thought experiments and common performance numbers to get a good feel for which designs will meet your requirements”
The ability to ask good questions is also an essential skill, and many interviewers specifically look for this skill.
The Open Systems Interconnection model (OSI model) has 7 layers [16]: Layer 1: Physical layer, Layer 2: Data link layer, Layer 3: Network layer, Layer 4: Transport layer, Layer 5: Session layer, Layer 6: Presentation layer, Layer 7: Application layer.
Versioning and vector clocks are used to solve inconsistency problems.
A vector clock is a [server, version] pair associated with a data item. It can be used to check if one version precedes, succeeds, or in conflict with others.
“after generating 1 billion UUIDs every second for approximately 100 years would the probability of creating a single duplicate reach 50%”
BFS is commonly used by web crawlers and is implemented by a first-in-first-out (FIFO) queue.

