Caching in distributed systems is an important aspect for designing scalable systems. We first discuss what is a cache and why we use it. We then talk about what are the key features of a cache in a distributed system.
The cache management policies of LRU and Sliding Window are mentioned here. For high performance, the cache eviction policy must be chosen carefully. To keep data consistent and memory footprint low, we must choose a write through or write back consistency policy.
Cache management is important because of its relation to cache hit ratios and performance. We talk about various scenarios in a distributed environment.
System Design Video Course:
https://get.interviewready.io/courses/system-design-interview-prep
A complete course on how systems are designed. Along with video lectures, the course has architecture diagrams, capacity planning, API contracts and evaluation tests.
Use the coupon code ‘earlybird’ for a 20% discount!
System Design Playlist: https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX
Designing Data Intensive Applications - https://amzn.to/2yQIrxH
Code: https://github.com/coding-parrot/Low-Level-Design/tree/master/distributed-cache
You can follow me on:
Facebook: https://facebook.com/gkcs0/
Quora: https://www.quora.com/profile/Gaurav-Sen-6
LinkedIn: https://www.linkedin.com/in/gaurav-sen-56b6a941/
Twitter: https://twitter.com/gkcs_
References:
Guava Cache - https://github.com/google/guava/wiki/CachesExplained
LRU - http://www.mathcs.emory.edu/~cheung/Courses/355/Syllabus/9-virtual-mem/LRU-replace.html
https://en.wikipedia.org/wiki/Cache_replacement_policies
Implementation of Sliding Window Cache policies (Caffeine) - https://github.com/ben-manes/caffeine
http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html
https://docs.microsoft.com/en-us/previous-versions/msp-n-p/dn589802(v%3dpandp.10)
#SystemDesign #Caching #DistributedSystems