<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://rystsov.com/</id>
  <title>Rystsov's programming blog</title>
  <link href="http://rystsov.com/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="http://rystsov.com/" rel="alternate" type="text/html"/>
  <updated>2016-04-16T18:30:00Z</updated>
  <author>
    <name>Denis Rystsov</name>
    <uri>https://twitter.com/rystsov</uri>
    <email>rystsov.denis@gmail.com</email>
  </author>

  
  
  <entry>
    <id>http://rystsov.com/2020/06/27/pacified-consensus.html</id>
    <title>Pacified consensus: how to retrofit leaderlessness into a Paxos or Raft based protocol</title>
    <summary>A leaderless consensus protocol built in a modular way on top of known consensus protocol. Its modularity helps in understanding and retrofitting into existing solutions.</summary>
    <link href="http://rystsov.com/2020/06/27/pacified-consensus.html" rel="alternate" type="text/html" title="Pacified consensus: how to retrofit leaderlessness into a Paxos or Raft based protocol"/>
    <published>Sat, 27 Jun 2020 00:00:00 +0000</published>
    <updated>Sat, 27 Jun 2020 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2018/10/01/tso.html</id>
    <title>Quorum clock: leaderless distributed clock</title>
    <summary>Clock can be seen as a device to measure time or a source of monotonic increasing sequence. In this post we see it as the latter and design fault-tolerant contention-free distributed clock.</summary>
    <link href="http://rystsov.com/2018/10/01/tso.html" rel="alternate" type="text/html" title="Quorum clock: leaderless distributed clock"/>
    <published>Mon, 01 Oct 2018 00:00:00 +0000</published>
    <updated>Mon, 01 Oct 2018 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2018/07/20/fast-jepsen.html</id>
    <title>Making Jepsen run for hours</title>
    <summary>&apos;Testing shared memories&apos; paper contains a way to test linearizability in linear time, let&apos;s apply it to Jepsen.</summary>
    <link href="http://rystsov.com/2018/07/20/fast-jepsen.html" rel="alternate" type="text/html" title="Making Jepsen run for hours"/>
    <published>Fri, 20 Jul 2018 00:00:00 +0000</published>
    <updated>Fri, 20 Jul 2018 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2017/07/16/linearizability-testing.html</id>
    <title>Old fast linearizability check</title>
    <summary>It&apos;s well known in the distributed system community that linearizability testing is NP-complete; luckily in some cases, it&apos;s possible to do it in O(n ln n).</summary>
    <link href="http://rystsov.com/2017/07/16/linearizability-testing.html" rel="alternate" type="text/html" title="Old fast linearizability check"/>
    <published>Sun, 16 Jul 2017 00:00:00 +0000</published>
    <updated>Sun, 16 Jul 2017 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2017/02/15/simple-consensus.html</id>
    <title>In search of a simple consensus algorithm</title>
    <summary>The modern landscape of consensus protocols is dominated by Raft; despite being understandable it isn&apos;t simple and has performance penalty. The post focuses on an alternative which has better performance characteristics and is simple enough to be implemented in 500 lines of code</summary>
    <link href="http://rystsov.com/2017/02/15/simple-consensus.html" rel="alternate" type="text/html" title="In search of a simple consensus algorithm"/>
    <published>Wed, 15 Feb 2017 00:00:00 +0000</published>
    <updated>Wed, 15 Feb 2017 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2016/05/01/paxos.html</id>
    <title>Visualization of a Paxos-based distributed state machine</title>
    <summary>Step-by-step visualization of a Single Decree Paxos based distributed state machine</summary>
    <link href="http://rystsov.com/2016/05/01/paxos.html" rel="alternate" type="text/html" title="Visualization of a Paxos-based distributed state machine"/>
    <published>Sun, 01 May 2016 00:00:00 +0000</published>
    <updated>Sun, 01 May 2016 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2016/04/07/ramp.html</id>
    <title>RAMP transactions</title>
    <summary>Step-by-step visualization of Non Blocking Read Committed distributed transactions</summary>
    <link href="http://rystsov.com/2016/04/07/ramp.html" rel="alternate" type="text/html" title="RAMP transactions"/>
    <published>Thu, 07 Apr 2016 00:00:00 +0000</published>
    <updated>Thu, 07 Apr 2016 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2016/03/02/cross-shard-txs.html</id>
    <title>Serializable cross shard client-side transactions</title>
    <summary>Step-by-step visualization of cross shard transactions</summary>
    <link href="http://rystsov.com/2016/03/02/cross-shard-txs.html" rel="alternate" type="text/html" title="Serializable cross shard client-side transactions"/>
    <published>Wed, 02 Mar 2016 00:00:00 +0000</published>
    <updated>Wed, 02 Mar 2016 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2016/01/05/raft-paxos.html</id>
    <title>Best of both worlds: Raft&apos;s joint consensus with Single Decree Paxos</title>
    <summary>Adapting the Raft&apos;s joint consensus membership change algorithm to work with Single Decree Paxos</summary>
    <link href="http://rystsov.com/2016/01/05/raft-paxos.html" rel="alternate" type="text/html" title="Best of both worlds: Raft&apos;s joint consensus with Single Decree Paxos"/>
    <published>Tue, 05 Jan 2016 00:00:00 +0000</published>
    <updated>Tue, 05 Jan 2016 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/12/30/read-write-quorums.html</id>
    <title>Read write quorums in Paxos</title>
    <summary>About read write quorums in plain Paxos</summary>
    <link href="http://rystsov.com/2015/12/30/read-write-quorums.html" rel="alternate" type="text/html" title="Read write quorums in Paxos"/>
    <published>Wed, 30 Dec 2015 00:00:00 +0000</published>
    <updated>Wed, 30 Dec 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/09/16/how-paxos-works.html</id>
    <title>How Paxos works</title>
    <summary>A memo on how Paxos works</summary>
    <link href="http://rystsov.com/2015/09/16/how-paxos-works.html" rel="alternate" type="text/html" title="How Paxos works"/>
    <published>Wed, 16 Sep 2015 00:00:00 +0000</published>
    <updated>Wed, 16 Sep 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  
  
  <entry>
    <id>http://rystsov.com/2015/08/26/sharded-paxos.html</id>
    <title>Paxos-based sharded ordered key value store with CAS</title>
    <summary>How to run an instance of paxos variable per key to build a key value storage and how to shard it on the fly without loosing consistency</summary>
    <link href="http://rystsov.com/2015/08/26/sharded-paxos.html" rel="alternate" type="text/html" title="Paxos-based sharded ordered key value store with CAS"/>
    <published>Wed, 26 Aug 2015 00:00:00 +0000</published>
    <updated>Wed, 26 Aug 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/08/24/dpp-variable.html</id>
    <title>Distributed variable and the dynamic environment</title>
    <summary>Updates distributed variable to work in the dynamic environment</summary>
    <link href="http://rystsov.com/2015/08/24/dpp-variable.html" rel="alternate" type="text/html" title="Distributed variable and the dynamic environment"/>
    <published>Mon, 24 Aug 2015 00:00:00 +0000</published>
    <updated>Mon, 24 Aug 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/08/23/paxos-variable.html</id>
    <title>Distributed variable</title>
    <summary>How to update the write-once distribted switch into a distributed variable with a compare-and-set (CAS) concurrency control mechanism</summary>
    <link href="http://rystsov.com/2015/08/23/paxos-variable.html" rel="alternate" type="text/html" title="Distributed variable"/>
    <published>Sun, 23 Aug 2015 00:00:00 +0000</published>
    <updated>Sun, 23 Aug 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/08/22/paxos-register.html</id>
    <title>Write-once distributed switch</title>
    <summary>Design of the write-once distributed switch</summary>
    <link href="http://rystsov.com/2015/08/22/paxos-register.html" rel="alternate" type="text/html" title="Write-once distributed switch"/>
    <published>Sat, 22 Aug 2015 00:00:00 +0000</published>
    <updated>Sat, 22 Aug 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2015/07/19/dynamic-plain-paxos.html</id>
    <title>Dynamic Plain Paxos</title>
    <summary>Dynamic Plain Paxos is an extension and a drop-in replacement for the classic Paxos algorithm that allows to change the membership during the reaching of consensus</summary>
    <link href="http://rystsov.com/2015/07/19/dynamic-plain-paxos.html" rel="alternate" type="text/html" title="Dynamic Plain Paxos"/>
    <published>Sun, 19 Jul 2015 00:00:00 +0000</published>
    <updated>Sun, 19 Jul 2015 00:00:00 +0000</updated>
  </entry>
  
  
  
  
  
  
  
  
  
  <entry>
    <id>http://rystsov.com/2012/09/01/cas.html</id>
    <title>Transactions in MongoDB, Cassandra, Zookeeper and others</title>
    <summary>How to do multi-key optimistic transactions if the storage supports only per-key CAS</summary>
    <link href="http://rystsov.com/2012/09/01/cas.html" rel="alternate" type="text/html" title="Transactions in MongoDB, Cassandra, Zookeeper and others"/>
    <published>Sat, 01 Sep 2012 00:00:00 +0000</published>
    <updated>Sat, 01 Sep 2012 00:00:00 +0000</updated>
  </entry>
  
  
  
  <entry>
    <id>http://rystsov.com/2009/05/01/uniquation.html</id>
    <title>Uniquation</title>
    <summary>A math search engine</summary>
    <link href="http://rystsov.com/2009/05/01/uniquation.html" rel="alternate" type="text/html" title="Uniquation"/>
    <published>Fri, 01 May 2009 00:00:00 +0000</published>
    <updated>Fri, 01 May 2009 00:00:00 +0000</updated>
  </entry>
  
  
</feed>