[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fgsdivmkwefzv":3},{"_id":4,"slug":5,"title":6,"subtitle":7,"kind":8,"cards":9,"tags":58,"categories":60,"source":62,"lang":65,"author":66,"audioState":69,"stats":70,"publishedAt":73,"renderer":74},"6abc89f6ca21c797c7ea0157","semi-linearizability-cut-coordination-keep-invariants-389ed112","Semi-Linearizability: Cut Coordination, Keep Invariants","Geo-distributed systems often treat every operation as if it needed the same level of coordination.","news",[10,13,18,23,28,33,38,43,48,53],{"headline":6,"body":11,"imageUrl":12,"sourceImageUrl":12},"Geo-distributed systems often treat every operation as if it needed the same level of coordination. The result is a blunt trade-off: either pay global tail latency and bandwidth for linearizability, or accept broad inconsistency. Semi-linearizability offers a third path — exploit asymmetric (directional) dependencies between operations so that only the few ops that truly need global ordering use consensus, while the common-case ops proceed locally and fast.","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7on2japcxyxwre043ef1.png",{"headline":14,"body":15,"imageUrl":16,"images":17},"In this article I'll explain the core idea","In this article I'll explain the core idea behind semi-linearizability, show how the DeMon prototype implements it, walk through a concrete auction example, and give a practical migration checklist you can use to start removing coordination from 50–70% of your writes. What is semi-linearizability?","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F1.webp",{"local":16},{"headline":19,"body":20,"imageUrl":21,"images":22},"Semi-linearizability is a consistency model that distinguishes operations","Semi-linearizability is a consistency model that distinguishes operations by the ordering relationships they require relative to other operations. Instead of forcing the entire system to provide a single uniform guarantee (e.g., linearizability), semi-linearizability defines three classes of relationships: Strong (linearizable) operations: require a global, strongly-ordered execution.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F2.webp",{"local":21},{"headline":24,"body":25,"imageUrl":26,"images":27},"Weak operations: may execute locally and be asynchronously","Weak operations: may execute locally and be asynchronously propagated, provided their causal relationships to strong operations are preserved. Semi (or intermediate) operations: a hybrid that may require additional ordering constraints in one direction.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F3.webp",{"local":26},{"headline":29,"body":30,"imageUrl":31,"images":32},"The key observation: many applications have asymmetric dependencies","The key observation: many applications have asymmetric dependencies. For example, in auctions a CloseAuction must observe all prior Bids that are relevant, but individual Bid operations don't need to be globally serialized against every other Bid. Semi-linearizability expresses those asymmetries and maps them to different coordination primitives. How DeMon realizes the model (high level) DeMon is a prototype that implements semi-linearizability with three primitives: Causal broadcast for weak operations (fast, local execution and asynchronous dissemination). Targeted consensus (e.g., OmniPaxos) for strong operations to establish a small, totally-ordered log.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F4.webp",{"local":31},{"headline":34,"body":35,"imageUrl":36,"images":37},"Watermarks (vector-clock style summaries) to bridge weak and","Watermarks (vector-clock style summaries) to bridge weak and strong paths: when a strong op is proposed it attaches a watermark that tells consensus which weak ops must be considered ordered before the strong op.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F5.webp",{"local":36},{"headline":39,"body":40,"imageUrl":41,"images":42},"A replica accepts a weak op, applies it","A replica accepts a weak op, applies it locally, and returns to the client immediately. The op is then causal-broadcast.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F6.webp",{"local":41},{"headline":44,"body":45,"imageUrl":46,"images":47},"A strong op is proposed through consensus and","A strong op is proposed through consensus and carries a watermark summarizing the set of weak ops that must be ordered before it.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F7.webp",{"local":46},{"headline":49,"body":50,"imageUrl":51,"images":52},"When a consensus entry is applied, replicas use","When a consensus entry is applied, replicas use the watermark to ensure any previously-applied weak ops are reconciled (possibly rolled back and replayed) so the strong ordering is respected.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F8.webp",{"local":51},{"headline":54,"body":55,"imageUrl":56,"images":57},"This lets frequent weak ops be sub-millisecond (DeMon","This lets frequent weak ops be sub-millisecond (DeMon reports up to four orders of magnitude improvement for the common operation in RUBiS), while keeping the strong ops correct and linearizable. Auctions: a concrete example Auctions are a simple, practical example that exposes asymmetric dependencies.","\u002Fapi\u002Fmedia\u002Fposts\u002Fsemi-linearizability-cut-coordination-keep-invariants-389ed112\u002F9.webp",{"local":56},[59],"dev",[61],"Technology",{"name":63,"url":64},"Dev.to","https:\u002F\u002Fdev.to\u002Fnainikmehta\u002Fsemi-linearizability-cut-coordination-keep-invariants-6j6","en",{"handle":67,"displayName":68},"spots","Spots","queued",{"views":71,"likes":72,"saves":72,"shares":72,"completions":72,"opens":72,"skips":72,"depthSum":72},1,0,"2026-09-30T04:03:02.444Z","local"]