<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Causal-Consistency on martinuke0&#39;s Blog</title>
    <link>https://martinuke0.github.io/tags/causal-consistency/</link>
    <description>Recent content in Causal-Consistency on martinuke0&#39;s Blog</description>
    <image>
      <title>martinuke0&#39;s Blog</title>
      <url>https://martinuke0.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://martinuke0.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Tue, 12 May 2026 14:00:22 +0000</lastBuildDate>
    <atom:link href="https://martinuke0.github.io/tags/causal-consistency/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Scaling Distributed State with Conflict-Free Replicated Data Types and Causal Consistency Mechanisms</title>
      <link>https://martinuke0.github.io/posts/2026-05-12-scaling-distributed-state-with-conflict-free-replicated-data-types-and-causal-consistency-mechanisms/</link>
      <pubDate>Tue, 12 May 2026 14:00:22 +0000</pubDate>
      <guid>https://martinuke0.github.io/posts/2026-05-12-scaling-distributed-state-with-conflict-free-replicated-data-types-and-causal-consistency-mechanisms/</guid>
      <description>&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#why-distributed-state-is-hard&#34;&gt;Why Distributed State Is Hard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#fundamentals-of-conflict%E2%80%91free-replicated-data-types-crdts&#34;&gt;Fundamentals of Conflict‑Free Replicated Data Types (CRDTs)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;3.1 &lt;a href=&#34;#state%E2%80%91based%E2%80%91cvrdt-vs%E2%80%91operation%E2%80%91based%E2%80%91cmrdt&#34;&gt;State‑Based (CvRDT) vs. Operation‑Based (CmRDT)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;3.2 &lt;a href=&#34;#common-crdt-families&#34;&gt;Common CRDT Families&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#causal-consistency-the-missing-piece&#34;&gt;Causal Consistency: The Missing Piece&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;4.1 &lt;a href=&#34;#definitions-and-guarantees&#34;&gt;Definitions and Guarantees&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;4.2 &lt;a href=&#34;#vector-clocks-and-version-vectors&#34;&gt;Vector Clocks and Version Vectors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#merging-crdts-with-causal-consistency&#34;&gt;Merging CRDTs with Causal Consistency&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;5.1 &lt;a href=&#34;#delta%E2%80%91state-crdts-%CE%B4%E2%80%91crdts&#34;&gt;Delta‑State CRDTs (Δ‑CRDTs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5.2 &lt;a href=&#34;#causally%E2%80%91ordered-delivery&#34;&gt;Causally‑Ordered Delivery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#design-patterns-for-scalable-distributed-state&#34;&gt;Design Patterns for Scalable Distributed State&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;6.1 &lt;a href=&#34;#sharding-and-partitioning&#34;&gt;Sharding and Partitioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6.2 &lt;a href=&#34;#event%E2%80%91sourcing-with-crdts&#34;&gt;Event‑Sourcing with CRDTs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;6.3 &lt;a href=&#34;#hybrid-approaches-crdt--consensus&#34;&gt;Hybrid Approaches: CRDT + Consensus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#practical-example-real%E2%80%91time-collaborative-text-editor&#34;&gt;Practical Example: Real‑Time Collaborative Text Editor&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;7.1 &lt;a href=&#34;#data-model-using-a-sequence-crdt&#34;&gt;Data Model Using a Sequence CRDT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;7.2 &lt;a href=&#34;#implementation-sketch-in-typescript&#34;&gt;Implementation Sketch in TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#implementation-in-different-languages&#34;&gt;Implementation in Different Languages&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;8.1 &lt;a href=&#34;#rust-with-crdts-crate&#34;&gt;Rust with &lt;code&gt;crdts&lt;/code&gt; crate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8.2 &lt;a href=&#34;#go-with-go%E2%80%91crdt&#34;&gt;Go with &lt;code&gt;go‑crdt&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;8.3 &lt;a href=&#34;#javascripttypescript-with-automerge&#34;&gt;JavaScript/TypeScript with &lt;code&gt;automerge&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#performance-latency-and-bandwidth-considerations&#34;&gt;Performance, Latency, and Bandwidth Considerations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#operational-concerns-and-monitoring&#34;&gt;Operational Concerns and Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#challenges-open-problems-and-future-directions&#34;&gt;Challenges, Open Problems, and Future Directions&lt;/a&gt;&lt;br&gt;
12 &lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;br&gt;
13 &lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Modern applications—social networks, collaborative productivity suites, multiplayer games, and IoT platforms—must serve millions of users while maintaining a responsive, &lt;em&gt;always‑available&lt;/em&gt; experience. To achieve this, developers often replicate state across geographically distributed data centers, edge nodes, and even client devices. Replication brings latency benefits, but it also introduces the classic &lt;em&gt;CAP&lt;/em&gt; trade‑off: guaranteeing consistency across all replicas while tolerating network partitions is impossible without sacrificing availability.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
