Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cluster size #53

Closed
ivanjaros opened this issue Sep 18, 2020 · 2 comments
Closed

Cluster size #53

ivanjaros opened this issue Sep 18, 2020 · 2 comments
Assignees
Labels
question Further information is requested

Comments

@ivanjaros
Copy link

I need to sync configuration for about 50-100 servers around the globe. There is one writer and the rest are readers. Can this project handle this? So far, everything that uses RAFT turned out to be unusable for this type of setup and since I have not seen any mention of RAFT anywhere, I wonder if this library could work out? Also, is there a way to write snapshot into storage so when a machine goes down and reboots it does not need to fetch the entire data set from scratch but only changes?

@buraksezer buraksezer self-assigned this Sep 18, 2020
@buraksezer buraksezer added the question Further information is requested label Sep 18, 2020
@buraksezer
Copy link
Owner

I need to sync configuration for about 50-100 servers around the globe.

Olric is specifically designed to handle that cluster size. But it's also designed to work on a low latency network. If there are too latency between hosts, you may experience unexpected behaviors.

Another very important topic on this is your consistency requirements: if you need strong consistency, you probably need a different kind of solution or maybe you need to revise your system design. Olric is a PA/EC product in the context of the PACELC principle. This means that Olric can be considered as a strongly consistent data store under certain conditions: such as stable network and ReplicationFactor=1. But the network is generally unreliable.

There is one writer and the rest are readers. Can this project handle this?

Yes it does. Look at this configuration: PartitionCount: 271, ClusterSize: 50. In this scenario Olric distributes the partitions among the cluster members. So most of the cluster members host 4 or 5 partitions and the writer thread will be routed to the partition owner transparently for every key.

So far, everything that uses RAFT turned out to be unusable

A plain RAFT or Paxos based design cannot handle this kind of load but Amazon published a paper called "Millions of tiny databases". I don't know what the problem you want to solve but the paper may give some inspiration.

Also, is there a way to write snapshot into storage so when a machine goes down and reboots it does not need to fetch the entire data set from scratch but only changes?

Unfortunately Olric doesn't provide this feature.

@ivanjaros
Copy link
Author

ok, thanks for the info. i kinda new i will have to write my own solution, just wanted to be sure i didn't miss some existing project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants