Senior 6 min · June 25, 2026

PACELC Theorem: When CAP Isn't Enough — Real Trade-Offs in Distributed Systems

PACELC theorem explained with production trade-offs.

N
Naren Founder & Principal Engineer

20+ years shipping large-scale distributed systems. Everything here is grounded in real deployments.

Follow
Production
production tested
June 25, 2026
last updated
1,663
articles · all by Naren
 ● Production Incident 🔎 Debug Guide ⚙ Triage Commands
Quick Answer

PACELC says: during a network partition, choose between availability and consistency (like CAP). When the system is healthy (Else), choose between low latency and strong consistency. This helps you design databases that don't just survive partitions but also perform well day-to-day.

✦ Definition~90s read
What is PACELC Theorem?

PACELC is an extension of the CAP theorem that also considers trade-offs between latency and consistency during normal operation (when no partition exists). It states: if a partition occurs (P), trade off availability (A) vs consistency (C); else (E), trade off latency (L) vs consistency (C).

Imagine a library with two branches.
Plain-English First

Imagine a library with two branches. If the phone line between them is cut (partition), you can either let each branch lend books independently (availability) or force them to wait until the line is fixed (consistency). When the line works (else), you can either update both branches instantly (strong consistency, slower) or let one branch update first and sync later (low latency, eventual consistency). PACELC captures both scenarios.

CAP theorem is taught in every system design interview, but it's incomplete. It only tells you what to do when the network is on fire. What about the other 99.9% of the time when everything is fine? That's where PACELC comes in — and ignoring it has cost teams millions in latency tax.

PACELC adds the 'Else' clause: when there is no Partition, you still have to choose between Latency and Consistency. Most production outages I've seen aren't partition-related — they're cascading failures from a database that chose strong consistency on every read, then collapsed under load.

By the end of this article, you'll be able to classify any distributed data store by its PACELC trade-off, predict its failure modes under load, and choose the right configuration for your service's latency budget.

Why CAP Alone Will Burn You in Production

CAP theorem says you can have at most two of Consistency, Availability, and Partition Tolerance. But it only applies during a partition. In practice, partitions are rare. The real cost is the latency-vs-consistency trade-off you make every millisecond when the network is healthy.

I've seen teams design systems that are 'CP' (consistent and partition-tolerant) using something like Zookeeper. During a partition, they lose availability — fine. But during normal operation, they still pay the latency cost of strong consistency on every read. Their p99 latency is 200ms because they insist on linearizable reads. Meanwhile, a competitor using an 'AP' system with eventual consistency serves reads in 5ms. Guess who wins?

PACELC forces you to answer: when there's no partition, do you optimize for low latency (L) or strong consistency (C)? Most production systems should optimize for latency and accept eventual consistency. But you need to know the cost.

CAP_vs_PACELC.systemdesignSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// io.thecodeforge — System Design tutorial

// CAP classification: Cassandra is AP (available + partition-tolerant)
// PACELC classification: Cassandra is PA/EL (when Partition, choose Availability; Else, choose Low latency)
// This means: during normal operation, Cassandra favors low latency over strong consistency.
// Writes are eventually consistent by default (tunable consistency).

// Example: Cassandra write with default consistency (ONE)
// Only one replica acknowledges the write, then async replication happens.
// This gives low latency but risk of stale reads.

// To get strong consistency, you'd use QUORUM:
// But that increases latency because you wait for a majority of replicas.

// Production rule: Use LOCAL_QUORUM for critical reads/writes, ONE for logs/metrics.
Output
No direct output — this is a design classification.
Production Trap:
Don't assume a CP system is always consistent. Even HBase can return stale data if you use a non-linearizable read (e.g., scan with 'readAllVersions'). Always verify your client's consistency level.
PACELC Classification Decision Tree
IfDuring partition, must the system remain available?
UseAP (e.g., Cassandra, DynamoDB)
IfDuring partition, must the system remain consistent?
UseCP (e.g., HBase, Zookeeper)
IfDuring normal operation, is low latency more important than strong consistency?
UseEL (e.g., Cassandra, Riak)
IfDuring normal operation, is strong consistency more important than low latency?
UseEC (e.g., HBase, Spanner)
PACELC Theorem: CAP's Missing Trade-Offs THECODEFORGE.IO PACELC Theorem: CAP's Missing Trade-Offs Mapping consistency, availability, and latency trade-offs in distributed systems PA/EL: High Availability Partition-tolerant, else low latency; eventual consistency PC/EC: Strong Consistency Partition-tolerant, else consistency; higher latency Tuning Consistency vs Latency Adjust quorum size and replication factor in production Hidden Cost of 'Else' Normal operation trade-offs often dominate partition scenarios Real-World Examples DynamoDB (PA/EL), Cassandra (tunable), Spanner (PC/EC) ⚠ PACELC fallacy: assuming you can have both consistency and low latency Always measure latency impact of consistency guarantees in normal operation THECODEFORGE.IO
thecodeforge.io
PACELC Theorem: CAP's Missing Trade-Offs
Pacelc Theorem

The PACELC Spectrum: From PA/EL to PC/EC

Every distributed database sits somewhere on the PACELC spectrum. Let's map the common ones.

PA/EL (Partition: Availability, Else: Low latency): Cassandra, DynamoDB, Riak. These are your 'always available, eventually consistent' systems. They shine when you need 99.999% uptime and can tolerate stale reads. The cost: you must handle conflicts (e.g., last-write-wins or CRDTs).

PC/EC (Partition: Consistency, Else: Consistency): HBase, Zookeeper, Spanner. These are your 'strong consistency at all costs' systems. They give you linearizable reads and writes, but you pay in latency and availability. Spanner uses TrueTime to achieve external consistency with reasonable latency, but it's complex and expensive.

PC/EL (Partition: Consistency, Else: Low latency): Some systems like MongoDB with default settings. During a partition, they favor consistency (primary-only writes). During normal operation, they favor low latency (reads from primary, writes acknowledged without replica wait). But this is a dangerous mix — you can lose writes during a partition if the primary goes down.

PA/EC (Partition: Availability, Else: Consistency): Rare. DynamoDB with DAX (in-memory cache) can behave this way: during partition, DynamoDB is available (AP), but DAX provides strong consistency for cached data. But this is a hybrid.

PACELC_spectrum.systemdesignSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// io.thecodeforge — System Design tutorial

// Example: Configuring Cassandra for PA/EL (default)
// cassandra.yaml

// Default consistency level: ONE
// This means: write to one replica, then async replicate.
// Low latency, eventual consistency.

// To move toward PA/EC (still available during partition, but stronger consistency during normal ops):
// Use LOCAL_QUORUM for reads and writes.
// This waits for a majority of replicas in the local datacenter.
// Increases latency but reduces stale reads.

// Example client code:
// Session session = cluster.connect();
// SimpleStatement stmt = new SimpleStatement("INSERT INTO orders (id, status) VALUES (?, ?)", orderId, "paid");
// stmt.setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM); // stronger consistency
// session.execute(stmt);
Output
No direct output — configuration example.
Senior Shortcut:
When evaluating a new database, ask: 'What's its PACELC classification?' If the vendor can't answer, they don't understand their own consistency model. Run away.
PA/EL vs PC/EC Trade-OffsTHECODEFORGE.IOPA/EL vs PC/EC Trade-OffsTwo ends of the PACELC spectrumPA/EL (e.g., Cassandra)Availability during partitionLow latency in normal opsStale reads possibleEventual consistency defaultPC/EC (e.g., Spanner)Consistency during partitionStrong consistency in normal opsHigher latency per writeUses TrueTime for clock syncChoose PA/EL for uptime; PC/EC for correctness guaranteesTHECODEFORGE.IO
thecodeforge.io
PA/EL vs PC/EC Trade-Offs
Pacelc Theorem

Tuning Consistency vs Latency in Production

You don't have to pick one PACELC class and stick with it. Most databases let you tune consistency per operation. This is where the real power lies.

In Cassandra, you can set consistency level per query. For a checkout service, you might use LOCAL_QUORUM for the 'place order' write (strong consistency) and ONE for a 'get order history' read (low latency). This gives you the best of both worlds — but you must understand the trade-off.

Here's the rule: every time you increase consistency, you increase latency. In Cassandra, QUORUM waits for a majority of replicas. If your replication factor is 3, QUORUM waits for 2 replicas. That adds network round-trips. Under high load, this can cause timeouts.

I've seen a team use QUORUM for every read in a Cassandra cluster with 5 replicas. Their p99 latency was 500ms. They switched to LOCAL_QUORUM (wait for 2 of 3 in local DC) and dropped to 50ms. The trade-off: during a cross-DC failover, they might read stale data. But that was acceptable for their use case.

CassandraConsistencyTuning.javaSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// io.thecodeforge — System Design tutorial

import com.datastax.driver.core.*;

public class CassandraConsistencyTuning {
    private Session session;

    public void placeOrder(String orderId, String status) {
        // Strong consistency for critical write
        SimpleStatement stmt = new SimpleStatement(
            "INSERT INTO orders (id, status) VALUES (?, ?)",
            orderId, status
        );
        stmt.setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM);
        session.execute(stmt);
    }

    public String getOrderStatus(String orderId) {
        // Low latency for read — eventual consistency is fine
        SimpleStatement stmt = new SimpleStatement(
            "SELECT status FROM orders WHERE id = ?",
            orderId
        );
        stmt.setConsistencyLevel(ConsistencyLevel.ONE);
        Row row = session.execute(stmt).one();
        return row.getString("status");
    }
}
Output
No direct output — code example.
Never Do This:
Don't use ALL or EACH_QUORUM consistency in Cassandra unless you absolutely need global strong consistency. These levels wait for all replicas across all datacenters, causing massive latency and potential timeouts. I've seen a production outage caused by EACH_QUORUM during a cross-DC network blip.
PACELC Decision Flow for WritesTHECODEFORGE.IOPACELC Decision Flow for WritesChoose consistency level per operation in productionIs network healthy?Else case: normal operationCritical write?e.g., payment, order placementUse strong consistencyLOCAL_QUORUM in CassandraNon-critical write?e.g., analytics, loggingUse eventual consistencyONE or LOCAL_ONE level⚠ Tuning per operation avoids global latency tax on all writesTHECODEFORGE.IO
thecodeforge.io
PACELC Decision Flow for Writes
Pacelc Theorem

When PACELC Breaks: The Hidden Cost of 'Else'

PACELC assumes the 'else' case is the normal, healthy state. But what if the system is degraded but not partitioned? For example, high CPU, memory pressure, or slow disks. In these cases, the latency-vs-consistency trade-off still applies, but the cost of strong consistency multiplies.

I debugged a case where a MongoDB replica set had a secondary with a slow disk. The primary was healthy, but writes with w:'majority' waited for the slow secondary to ack. Write latency went from 10ms to 500ms. The fix: reduce write concern to w:1 (acknowledged by primary only) and monitor secondary lag. This is effectively moving from EC (else consistency) to EL (else latency) for writes.

Another scenario: network latency between datacenters. If your application is multi-region and you use strong consistency across regions, every write waits for a round-trip to the other region. That's 100ms+ added latency. In this case, you might want to use local consistency (e.g., LOCAL_QUORUM) and accept eventual consistency across regions. PACELC doesn't explicitly cover multi-region, but the same principle applies: when the network is healthy but slow, you still trade latency for consistency.

MongoDBWriteConcern.jsSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// io.thecodeforge — System Design tutorial

// MongoDB write concern configuration

// Strong consistency (EC): wait for majority of replicas
// db.orders.insertOne(
//    { _id: 1, status: "paid" },
//    { writeConcern: { w: "majority", j: true } }
// );
// This waits for a majority of voting members to acknowledge the write.
// Latency: depends on slowest replica.

// Low latency (EL): acknowledge by primary only
// db.orders.insertOne(
//    { _id: 1, status: "paid" },
//    { writeConcern: { w: 1 } }
// );
// This returns as soon as the primary acknowledges.
// Risk: if primary fails before replication, write is lost.

// Production rule: Use w:'majority' for critical data (e.g., payments).
// Use w:1 for logs, metrics, or any data that can be regenerated.
Output
No direct output — configuration example.
Production Trap:
If you use w:'majority' in MongoDB and one replica is slow, all writes slow down. Monitor replica lag and set a wtimeout to avoid indefinite blocking. Error: 'WriteConcernError: timed out waiting for majority'.

PACELC in the Real World: DynamoDB, Cassandra, and Spanner

Let's look at three production systems and their PACELC profiles.

DynamoDB: PA/EL. During a partition, DynamoDB chooses availability (you can still read and write, but may get stale data). During normal operation, it chooses low latency (eventual consistency by default). You can opt into strongly consistent reads, but they cost 2x the read capacity units and have higher latency. DynamoDB's DAX cache adds another layer: it can serve strongly consistent reads with low latency by caching the primary, but that's a separate component.

Cassandra: PA/EL by default. Tunable consistency lets you move along the spectrum. For example, using SERIAL consistency gives you linearizable transactions (PA/EC for those operations), but at a latency cost.

Spanner: PC/EC. Spanner uses TrueTime to provide external consistency (linearizability) even across datacenters. During a partition, Spanner chooses consistency over availability (it may reject writes if it can't get a quorum). During normal operation, it still enforces strong consistency, but TrueTime allows it to do so with lower latency than traditional two-phase commit. However, Spanner is complex and expensive — you only use it when you absolutely need global strong consistency.

DynamoDBConsistency.javaSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// io.thecodeforge — System Design tutorial

import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.*;

public class DynamoDBConsistency {
    private DynamoDbClient client;

    public void putItem(String tableName, String key, String value) {
        // Default: eventually consistent write (low latency)
        PutItemRequest request = PutItemRequest.builder()
            .tableName(tableName)
            .item(Map.of("id", AttributeValue.fromS(key),
                         "data", AttributeValue.fromS(value)))
            .build();
        client.putItem(request);
    }

    public String getItemStronglyConsistent(String tableName, String key) {
        // Strongly consistent read (higher latency, double RCU cost)
        GetItemRequest request = GetItemRequest.builder()
            .tableName(tableName)
            .key(Map.of("id", AttributeValue.fromS(key)))
            .consistentRead(true)  // PACELC: choose consistency over latency
            .build();
        GetItemResponse response = client.getItem(request);
        return response.item().get("data").s();
    }
}
Output
No direct output — code example.
Interview Gold:
When asked 'Why would you choose DynamoDB over Cassandra?', mention PACELC: DynamoDB is fully managed and PA/EL by default, while Cassandra gives you more tuning knobs but requires operational expertise. Your choice depends on your team's ability to manage the trade-offs.

The PACELC Fallacy: Why You Can't Have It All

Some vendors claim to offer 'strong consistency with low latency'. That's a lie — or at least a half-truth. They might use techniques like consensus protocols (Raft, Paxos) or clock synchronization (TrueTime) to reduce the latency cost of consistency, but there's always a trade-off.

For example, etcd uses Raft to provide linearizable reads. But a linearizable read still requires a round-trip to the leader, which adds latency. You can use 'ReadIndex' or 'lease read' to optimize, but you're still paying a cost. Similarly, Spanner's TrueTime reduces the cost of global consistency, but it's not free — you need specialized hardware and software.

The PACELC theorem reminds us that there's no free lunch. You must choose: either you pay in latency, or you pay in consistency. The art is in choosing the right trade-off for each operation.

etcdLinearizableRead.goSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// io.thecodeforge — System Design tutorial

package main

import (
	"context"
	"fmt"
	"go.etcd.io/etcd/client/v3"
	"time"
)

func main() {
	cli, _ := clientv3.New(clientv3.Config{
		Endpoints:   []string{"localhost:2379"},
		DialTimeout: 5 * time.Second,
	})
	defer cli.Close()

	ctx := context.Background()

	// Linearizable read (strong consistency) — requires round-trip to leader
	resp, err := cli.Get(ctx, "mykey", clientv3.WithSerializable())
	if err != nil {
		panic(err)
	}
	fmt.Printf("Value: %s\n", resp.Kvs[0].Value)

	// Serializable read (low latency) — can be served by any node, but may be stale
	// Use clientv3.WithSerializable() for this
}
Output
Value: myvalue
Senior Shortcut:
When you need strong consistency but can't afford the latency, consider using a cache with invalidation. For example, write-through cache to Redis, then read from Redis. This gives you low latency reads with strong consistency (if you invalidate on write). But you now have two systems to manage.

Production Patterns: How to Apply PACELC in Your Architecture

Here are three patterns I've used in production to apply PACELC thinking.

Pattern 1: Operation-level consistency tuning. As shown earlier, use different consistency levels for different operations. Critical writes (e.g., payment) use strong consistency; non-critical reads (e.g., product catalog) use eventual consistency. This is the most common and effective pattern.

Pattern 2: Service-level PACELC isolation. Separate your services by their PACELC requirements. For example, a 'user session' service might need strong consistency (PC/EC) because stale sessions cause login issues. A 'recommendation' service can be PA/EL because stale recommendations are acceptable. Run them on different databases or clusters.

Pattern 3: Hybrid PACELC with caching. Use a strongly consistent database (e.g., PostgreSQL) as source of truth, and a cache (e.g., Redis) for low-latency reads. The cache is eventually consistent with the database. This gives you the best of both worlds, but adds complexity in cache invalidation.

I've used Pattern 3 in a high-traffic e-commerce site. Product details were served from Redis (low latency), but inventory counts were read from PostgreSQL (strong consistency). This prevented overselling while keeping page load times under 100ms.

HybridPACELC.javaSYSTEMDESIGN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// io.thecodeforge — System Design tutorial

import redis.clients.jedis.Jedis;
import java.sql.*;

public class HybridPACELC {
    private Jedis cache;
    private Connection db;

    public Product getProduct(String productId) {
        // Try cache first (low latency, eventual consistency)
        String cached = cache.get("product:" + productId);
        if (cached != null) {
            return parseProduct(cached);
        }

        // Fall back to database (strong consistency, higher latency)
        Product product = queryDatabase(productId);
        cache.setex("product:" + productId, 3600, serialize(product));
        return product;
    }

    public void updateInventory(String productId, int quantity) {
        // Strong consistency write to database
        PreparedStatement stmt = db.prepareStatement(
            "UPDATE products SET inventory = ? WHERE id = ?"
        );
        stmt.setInt(1, quantity);
        stmt.setString(2, productId);
        stmt.executeUpdate();

        // Invalidate cache
        cache.del("product:" + productId);
    }
}
Output
No direct output — code example.
Never Do This:
Don't use a cache as your source of truth for critical data. If the cache goes down, you lose data. Always have a fallback to a durable database. Error: 'Cache miss cascade' — when cache is empty, all requests hit the database, causing a thundering herd.
● Production incidentPOST-MORTEMseverity: high

The 2-Second Read That Took Down Checkout

Symptom
Checkout service latency spiked from 50ms to 2s, then timed out. Database CPU at 100%, connections saturated.
Assumption
Team assumed a traffic spike. They scaled read replicas, but CPU stayed pinned.
Root cause
The service used MongoDB with read preference 'primary' and write concern 'majority'. Every read went to the primary, and every write waited for a majority of replicas to ack. Under normal load, this was fine. But a background job started scanning the entire orders collection with strong consistency reads, causing primary CPU to max out. Replicas were idle because reads never touched them.
Fix
Changed read preference to 'secondaryPreferred' for the background job. Reduced write concern to 'acknowledged' (no replica wait) for non-critical writes. Latency dropped to 60ms.
Key lesson
  • Strong consistency is a shared resource — if you use it everywhere, you'll bottleneck on the primary.
  • Route read-heavy workloads to replicas and accept eventual consistency where possible.
Production debug guideSystematic recovery paths for the failure modes engineers actually hit.3 entries
Symptom · 01
High write latency in Cassandra with LOCAL_QUORUM
Fix
1. Check nodetool tpstats for pending tasks. 2. Check nodetool gossipinfo for node status. 3. If a node is slow, remove it from the cluster temporarily. 4. Reduce consistency level to ONE for non-critical writes.
Symptom · 02
Stale reads in DynamoDB after a write
Fix
1. Check if read uses consistentRead=false. 2. If strong consistency needed, switch to consistentRead=true (costs 2x RCU). 3. Alternatively, use DAX with strong consistency mode.
Symptom · 03
MongoDB write concern timeout
Fix
1. Check rs.status() for replica lag. 2. If a secondary is lagging, reduce write concern to w:1 temporarily. 3. Investigate secondary disk I/O or network latency.
★ PACELC Theorem Triage Cheat SheetFirst-response commands for when things go wrong — copy-paste ready.
Cassandra read latency spike
Immediate action
Check if reads use QUORUM or ALL
Commands
nodetool cfstats orders | grep 'Read latency'
nodetool proxyhistograms
Fix now
Change consistency to LOCAL_QUORUM or ONE
DynamoDB throttling on strongly consistent reads+
Immediate action
Check consumed read capacity
Commands
aws dynamodb describe-table --table-name orders --query 'Table.ProvisionedThroughput'
aws cloudwatch get-metric-statistics --metric-name ConsumedReadCapacityUnits --namespace AWS/DynamoDB --statistics Sum
Fix now
Increase read capacity or switch to eventual consistency
MongoDB write concern timeout+
Immediate action
Check replica set status
Commands
rs.status()
db.currentOp()
Fix now
Set writeConcern to {w: 1} temporarily
etcd linearizable read timeout+
Immediate action
Check leader health
Commands
etcdctl endpoint status --write-out=table
etcdctl endpoint health
Fix now
Use serializable reads (WithSerializable()) for non-critical paths
Feature / AspectPA/EL (e.g., Cassandra)PC/EC (e.g., HBase)
Partition behaviorAvailable (may serve stale data)Consistent (may reject writes)
Normal latencyLow (eventual consistency)Higher (strong consistency)
Conflict resolutionRequired (e.g., LWW, CRDTs)Not needed (linearizable)
Use caseHigh availability, tolerant of stalenessFinancial transactions, inventory
Operational complexityMedium (tuning consistency levels)High (region servers, ZK)

Key takeaways

1
PACELC extends CAP by forcing you to consider the latency-vs-consistency trade-off during normal operation, not just during partitions.
2
Tune consistency per operation
use strong consistency for critical writes, eventual consistency for non-critical reads.
3
Most production issues come from ignoring the 'Else' case
designing only for partitions and ignoring normal operation latency.
4
There's no free lunch
strong consistency always costs latency. The art is choosing the right trade-off for each operation.
INTERVIEW PREP · PRACTICE MODE

Interview Questions on This Topic

Q01SENIOR
How does PACELC extend CAP, and why is it more useful for real-world sys...
Q02SENIOR
You're designing a global e-commerce platform. Would you choose DynamoDB...
Q03SENIOR
What happens if you use QUORUM reads and writes in Cassandra during a ne...
Q04JUNIOR
What is the CAP theorem?
Q05SENIOR
You notice high write latency in a MongoDB replica set. How do you diagn...
Q06SENIOR
How would you design a multi-region database to minimize latency while m...
Q01 of 06SENIOR

How does PACELC extend CAP, and why is it more useful for real-world system design?

ANSWER
CAP only addresses behavior during a network partition, which is rare. PACELC adds the 'Else' clause for normal operation, forcing you to consider the latency vs consistency trade-off that dominates day-to-day performance. Most production issues stem from ignoring this trade-off.
FAQ · 4 QUESTIONS

Frequently Asked Questions

01
What is the PACELC theorem in simple terms?
02
What's the difference between CAP and PACELC?
03
How do I choose between strong consistency and low latency in my database?
04
Can I have both strong consistency and low latency in a distributed system?
N
Naren Founder & Principal Engineer

20+ years shipping large-scale distributed systems. Everything here is grounded in real deployments.

Follow
Verified
production tested
June 25, 2026
last updated
1,663
articles · all by Naren
🔥

That's Distributed Systems. Mark it forged?

6 min read · try the examples if you haven't

Previous
Consistency Models
7 / 9 · Distributed Systems
Next
Vector and Lamport Clocks