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)