Ivan Andika created RATIS-2403:
----------------------------------

             Summary: Improve linearizable follower read throughput instead of 
writes
                 Key: RATIS-2403
                 URL: https://issues.apache.org/jira/browse/RATIS-2403
             Project: Ratis
          Issue Type: Improvement
            Reporter: Ivan Andika


While benchmarking linearizable follower read, the observation is that the more 
requests go to the followers instead of the leader, the write throughput 
improves dramatically by around 2-3x compared to the leader-only write and read 
(most likely due to less leader resource contention). However, the read 
throughput becomes worst than leader-only write and read  (some can be below 
0.2x). Even with optimizations such as RATIS-2392 
RATIS-2382[|https://github.com/apache/ratis/pull/1334] RATIS-2379, the read 
throughput remains worse than leader-only write. I suspect that because write 
throughput increase, the read index changes a lot faster which causes follower 
to wait a lot longer. 

The target is to improve read throughput by 1.5x - 2x of the leader-only write 
and reads. 

Raising this ticket for ideas.

Currently my ideas are
 * Sacrificing writes for reads
 ** From the benchmark, the read throughput only improves when write throughput 
is lower
 ** We can try to use backpressure mechanism so that writes do not advance so 
quickly that read throughput suffer
 *** Follower gap mechanisms (RATIS-1411), but this might cause leader to stall 
if follower down for a while (e.g. restarted), which will violated the majority 
availability guarantee
 **** It's also hard to know which value is the best
 **  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to