Hi Philip,
I have done some research in order to check the performance of my software.
I did some performance Tests on different cluster-sizes with my software starting with just one node. I did this tests with at maximum 20 voters and repeated it with 20 nodes where there where at most 9 voters with the exess nodes becoming non-voters / read-only-nodes.
According to READ_ONLY_NODES.md you said "if you need a high volume of reads, without adding write latency to the cluster".
As you can see in the image above, there was no difference in time behavior using all nodes as voters and capped the voter size to 9 nodes.
Some information on how i did the test:
Before and after each write request the current system time is read using the highresolution clock in C++. This will be done a thousand times for each cluster-size.
Afterwards the avarage will be calculated displaying the times you see in the image above. For example one write request with a cluster of two nodes takes about 1.5ms.
Test environment:
- Running in docker on one host machine (therefore network delay wont be a thing)
- did this with rqlite 5.5.1 and the latest release 5.10.2
- double checked that non voters are actually started with -raft-non-voter=true
- times are always calculated on the leader node
I expected that the times for the restricted voter-size-cluster will no longer increase. Instead, the cluster with non-voters behaves the same as the cluster with voters.
Might this be a bug or did i missunderstood the sentence "without adding write latency"?
Best regards,
Gerrit