
Understanding Cache Consistency Approaches in Distributed Systems
Explore the concept of cache consistency in distributed systems, covering key questions, cache consistency approaches, and the use of leases for maintaining data integrity. Learn about different types of leases and their renewals to ensure data coherence across multiple clients.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Distributed Systems CS 15-440 Caching Part II Lecture 22, November 20, 2019 Mohammad Hammoud
Today Last Lecture: One-copy semantic and cache consistency Today s Lecture: Continue with cache consistency Announcements: Project 3 is due today by midnight Project 4 will be out tomorrow. It is due on Dec 02. PS5 will be out today. It is due on Nov 28.
Key Questions What data should be cached and when? Fetching Policy How can updates be made visible everywhere? Consistency or Update Propagation Policy What data should be evicted to free up space? Cache Replacement Policy 3
Cache Consistency Approaches We will study 7 cache consistency approaches: 1. Broadcast Invalidations 2. Check on Use 3. Callback 4. Leases 5. Skip Scary Parts 6. Faith-Based Caching 7. Pass the Buck
Leases A client places a request to obtain a finite-duration control from the server This duration is called a lease period (typically, for few seconds) There are three types of leases Read and write leases, assuming an invalidation-based protocol Multiple requestors can obtain read leases on the same object, but only one can get a write lease on any object Open leases, assuming a check-on-use protocol A requestor loses control when its lease expires However, it can renew the lease if needed
Lease Renewal Example: (F) Server Sorry, I can give you a read lease for time Y on F Renew my read lease for another time Y on F Okay, you got an extension for Y time on your read lease over F Give me a read lease for time X on F (F) Client 1 Read F for duration Y Read F for duration Y Clocks at Involved Machines are Assumed to be Synchronized
Leases A write goes as follows, assuming an invalidation-based protocol: ([F1, <1, wl>], [F2, <2, nl>], [F3, <3, nl>]) ([F1, <1, nl>], [F2, <2, nl>], [F3, <3, nl>]) ([F1, <1, nl>, <2, nl>], [F2, <2, nl>], [F3, <3, nl>]) State: Server Need to Write on F1 for time t (F1) Go Ahead Write- back F1 Invalidate F1 Client 1 Write on F1 Ack (F1, F2) (F2) Client 2 (F3) Client 3 [Fi, <x, y>] = File Fi is cached at Client x and is either not leased (i.e., y = nl), or read-leased (y = rl), or write-lease (y = wl).
Leases What if a write request arrives to the server in between? It can be queued, until the previous request is satisfied Only one write can go at a time and multiple requests can be queued and serviced in a specific order (e.g., FIFO order) When serviced, the up-to-date copy has to be shipped to its site (as its copy has been invalidated before allowing the previous write to proceed) What if a read request arrives to the server in between? It can be queued as well After write is done, either another write is pursued singlehandedly, or one or more reads go in parallel In any case, the up-to-date copy has to be shipped as well
Leases An open goes as follows, assuming session-semantic: Time Intervals: t t Push New Value t > t ([F1, <2, t >, <1, E>], [F2, <2, t >], [F3, <3, t>]) ([F1, <2, t >], [F2, <2, t >], [F3, <3, t>]) ([F1, <2, t >, <1, t >], [F2, <2, t >], [F3, <3, t>]) State: Server Go Ahead Write- back F1 Open F1 for time t (F1) Push F1 Client 1 Write on F1 for time t (F1, F2) Client 2 Client 2 can see up-to-date F1 without polling the server (F3) Client 3 [Fi, <x, y>] = File Fi is cached at Client x and either has its lease expired (i.e., y = E), or valid till end of y.
Leases An open goes as follows, assuming session-semantic: Time Intervals: t t Do Not Push New Value t < t ([F1, <2, E>, <1, E>], [F2, <2, t >], [F3, <3, t>]) ([F1, <2, t >], [F2, <2, t >], [F3, <3, t>]) ([F1, <2, t >, <1, t >], [F2, <2, t >], [F3, <3, t>]) State: Server Go Ahead Write- back F1 Open F1 for time t (F1) Client 1 Write on F1 for time t (F1, F2) Client 2 Client 2 does NOT see up-to-date F1 (It can pullit after t expires) (F3) Client 3 [Fi, <x, y>] = File Fi is cached at Client x and either has its lease expired (i.e., y = E), or valid till end of y.
Leases In this case: A lease becomes a promise by the server that it will push updates to a client for a specified time (i.e., the lease duration) When a lease expires, the client is forced to poll the server for updates and pull the modified data if necessary The client can also renew its lease and get again updates pushed to its site for the new lease duration Flexibility in choices!
Leases Advantages: Generalizes the check-on-use and callback schemes Lease duration can be tuned to adapt to mutation rate It is a clean tuning knob for design flexibility Conceptually simple, yet flexible
Leases Disadvantages: Lease-holder has total autonomy during lease Load/priorities can change at the server Revocation (where a lease is withdrawn by the server from the lease- holder) can be incorporated In an invalidation-based, lease-based protocol: Writers will be delayed on an object until all the read leases on that object are expired Keep-alive callbacks are needed Stateful server, which typically implies inferior fault-tolerance and scalability (in terms of capacity and communication)
Cache Consistency Approaches We will study 7 cache consistency approaches: 1. Broadcast Invalidations 2. Check on Use 3. Callback 4. Leases 5. Skip Scary Parts 6. Faith-Based Caching 7. Pass the Buck
Skip Scary Parts Basic Idea: When write-sharing is detected, caching is turned off Afterwards, all references go directly to the master copy Caching is resumed when write-sharing ends Advantages: Precise single-copy semantics (even at byte-level consistency) Excellent fallback strategy Exemplifies good engineering: Handle average case well; worst case safely Good adaptation of caching aggressiveness to workload characteristics (i.e., patterns of reads and writes)
Skip Scary Parts Disadvantages: Server needs to be aware of every use of data Assuming it is used in conjunction with check-on-use Either clients expose their wills of making writes upon opening files Or the server relies on clients write-backs upon closing files (which indicate writes on files) Server maintains some monitoring state
Cache Consistency Approaches We will study 7 cache consistency approaches: 1. Broadcast Invalidations 2. Check on Use 3. Callback 4. Leases 5. Skip Scary Parts 6. Faith-Based Caching 7. Pass the Buck
A Primer: Eventual Consistency Many applications can tolerate inconsistency for a long time Webpage updates, Web Search Crawling, indexing and ranking, Updates to DNS Server In such applications, it is acceptable and efficient if updates are infrequently propagated A caching scheme is termed as eventually consistent if: All replicas will gradually become consistent in the absence of updates
A Primer: Eventual Consistency Caching schemes typically apply eventual consistency if: Write-write conflicts are rare Very rare for two processes to write to the same object Generally, one client updates the data object E.g., One DNS server updates the name-to-IP mappings Rare conflicts can be handled through simple mechanisms, such as mutual exclusion Read-write conflicts are more frequent Conflicts where one process is reading an object, while another process is writing (or attempting to write) to a replica of it Eventually consistent schemes have to focus on efficiently resolving these conflicts
Faith-Based Caching Basic Idea (an implementation of eventual consistency): A client blindly assumes cached data is valid for a while Referred to as trust period E.g., In Sun NFSv3 cached files are assumed current for 3 seconds, while directories for 30 seconds A small variant is to set a time-to-live (TTL) field for each object It periodically checks (based on time since last check) the validity of cached data No communication occurs during trust period Advantages: Simple implementation Server is stateless
Faith-Based Caching Disadvantages: Potential user-visible inconsistencies when a client accesses data from different replicas Consistency guarantees are typically needed for a single client while accessing cached copies (e.g., read-your-own-writes) Webpage-A Webpage-A Webpage-A Webpage-A Webpage-A Webpage-A Event: Update Webpage-A Webpage-A Webpage-A Webpage-A Webpage-A Webpage-A Webpage-A This becomes more of a consistency problem for server-side replication (we will discuss it later under server-side replication)
Cache Consistency Approaches We will study 7 cache consistency approaches: 1. Broadcast Invalidations 2. Check on Use 3. Callback 4. Leases 5. Skip Scary Parts 6. Faith-Based Caching 7. Pass the Buck
Pass the Buck Basic Idea (another implementation of eventual consistency) Let the user trigger cache re-validation (hit reload ) Otherwise, all cached copies are assumed valid Equivalent to infinite-TTL faith-based caching Advantages: Simple implementation Avoids frivolous cache maintenance traffic Server is stateless
Pass the Buck Disadvantages: Places burden on users Users may be clueless about levels of consistency needed Assumes existence of users Pain for write scripts/programs
Cache Consistency Approaches We will study 7 cache consistency approaches: 1. Broadcast Invalidations 2. Check on Use 3. Callback 4. Leases 5. Skip Scary Parts 6. Faith-Based Caching 7. Pass the Buck Many minor variants over the years, but these have withstood the test of time!
Three Key Questions What data should be cached and when? Fetching Policy How can updates be made visible everywhere? Consistency or Update Propagation Policy What data should be evicted to free up space? Cache Replacement Policy
Next Class Discuss cache replacement policies