Earlier quoted context omitted.
Yes but those can happen at the convenience of the particular node, not necessarily as a globally chrckpointed fsync()
Then you're sacrificing consistency guarantees. If less than a majority have committed a write, it could be lost while the cluster still has a quorum up. Waiting to report success until a majority have committed allows you to make guarantees with a straight face.. "it will probably be committed in the near future" is not the same thing.
IceFireDB: Distributed disk storage database based on Raft and Redis protocol
51–60 of 71 posts
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#52Earlier quoted context omitted.
Typically people use raft for leader election which in turn can coordinate writes. I don't think the writes are being fsync'd in the raft logs here. At least I wouldn't expect that behavior.
You don't understand Raft. Quorum has to fsync for commit
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#53Earlier quoted context omitted.
What is a better consensus protocol to use?
Look higher up the problem domain and solve it without requiring a consensus protocol.
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#54Quasi-related: what are some good hosted alternatives to AWS dynamodb / GCloud Firestore that are a) fast b) affordable at scale c) have a good local dev experience? A hosted disk based redis protocol compliant capable of sub TB size datasets would be a dream for me.
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#55Quasi-related: what are some good hosted alternatives to AWS dynamodb / GCloud Firestore that are a) fast b) affordable at scale c) have a good local dev experience? A hosted disk based redis protocol compliant capable of sub TB size datasets would be a dream for me.
I am not sure what weight you assign to each of your requirements but DynamoDB has official Docker containers that you can use for local development. I don't find it different than developing against postgres etc. If you have tried it what problems have you encountered that make you wish for a better experience? https://hub.docker.com/r/amazon/dynamodb-local
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#56Earlier quoted context omitted.
Wouldn't mind knowing what versions you were using/how long ago this was. We haven't seen anything like this in > 3 years. Possible a barely supported plugin caused issues?
This is post 1.0 and without any plugins for consul. Vault has been a persistent point of failure. It’s a good idea in principle but it’s not got a good ROI
Most of the problems I've had with Vault have been around it's Terraform provider which they've improved enough that it's not an issue anymore.
I think the only thing about Raft that folks don't realize is how disk hungry it gets, if you want fast write performance you gotta make dang sure all those fsyncs can keep up. Our largest Consul cluster today runs on storage-heavy boxes as it does ~500Mb/s of writes pretty much 24/7.
I use Consul w/ Vault today instead of the internal storage for Vault just cause Consul has really nice monitoring around some stuff that Vault doesn't (path-based stuff for the most part), I think the internal storage is a really good option for 90% of use-cases.
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#57Earlier quoted context omitted.
Then you're sacrificing consistency guarantees. If less than a majority have committed a write, it could be lost while the cluster still has a quorum up. Waiting to report success until a majority have committed allows you to make guarantees with a straight face.. "it will probably be committed in the near future" is not the same thing.
Not necessarily. As long as your quorums always overlap you can have weaker commit requirements. See the FPaxos paper and some of Heidi Howard’s blogs for more on this. https://fpaxos.github.io/
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#58Earlier quoted context omitted.
You don't understand Raft. Quorum has to fsync for commit
It reads like you and GP are talking about two different things. You’re talking about Raft specifics and the GP seems to be talking about a Vertical Paxos like setup where Raft is used for configuration and the data path uses another replication algorithm such as Primary-Backup or Chain Replication.
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#59Earlier quoted context omitted.
A database without any code, actually. It's less than a few hundred lines of Go that just wraps two other databases (syndtr/goleveldb and ledisdb/ledisdb) with a third library (tidwall/uhaha) that provides a Raft API.
Oooh that means I can form it to do Redis instead right? Because that could be a nice way to to Redis clustering
Aerospike and ScyllaDB both support a subset of the Redis API and run as a durable cluster. Both have been tested with Jepsen.
Re: IceFireDB: Distributed disk storage database based on Raft and Redis protocol
#60Quasi-related: what are some good hosted alternatives to AWS dynamodb / GCloud Firestore that are a) fast b) affordable at scale c) have a good local dev experience? A hosted disk based redis protocol compliant capable of sub TB size datasets would be a dream for me.