Comments (8)
The snapshot should contain the full state of your state machine, which in turn should be normally kept in-memory, so generally the constraint of having the snapshot fit in memory should be acceptable my most applications. What use case do you have?
This raft library could be changed to perform multiple RPC requests for sending a snapshot, but that's a bit out of scope right now, since we didn't have that need yet for our application. Patches would be welcome tho.
from raft.
if i use this raft lib to replicate my RocksDB database, and snapshot of RocksDB may bigger than memory size of machine. So the database snapshot can't be send by one request.
from raft.
I see. As I said, sending snapshots in multiple chunks is currently not supported nor planned. I would have no objection if you wanted to do that work as contribution, but at the moment I don't have time to work on this myself.
from raft.
have some detail design? and i can contribute some patch.
from raft.
have some detail design? and i can contribute some patch.
I don't, as it's not going to be trivial. The main issue is that if your snapshot doesn't fit in memory, then your finite state machine will also presumably not fit in memory, correct? That means several changes in various parts of the library. In general Raft seems to be a better fit for state machines that fit in memory, and that's why many libraries what there make that assumption. It's possible to have your state machine partly persisted on disk, but that complicates the design and the library. One cheap option would be to rely on OS caching/swapping, but not sure if that would be acceptable for your use case.
from raft.
have some detail design? and i can contribute some patch.
I don't, as it's not going to be trivial. The main issue is that if your snapshot doesn't fit in memory, then your finite state machine will also presumably not fit in memory, correct? That means several changes in various parts of the library. In general Raft seems to be a better fit for state machines that fit in memory, and that's why many libraries what there make that assumption. It's possible to have your state machine partly persisted on disk, but that complicates the design and the library. One cheap option would be to rely on OS caching/swapping, but not sure if that would be acceptable for your use case.
ok, thanks.
from raft.
Can I close this?
from raft.
Can I close this?
yes
from raft.
Related Issues (20)
- missing getrandom on centos 7 HOT 1
- [question] Usage of raft_add, raft_remove, and raft_assign HOT 2
- [question] When is the first leader elected? HOT 2
- recvAppendEntries: Assertion `r->state == RAFT_FOLLOWER || r->state == RAFT_CANDIDATE` failed HOT 9
- [question] Forwarding request to leader HOT 8
- Potential use-after-free in handling of raft_transfer HOT 5
- Fix the 32-bit CI HOT 1
- can't build on m1 mac (`<linux/xxxxx.h>` is missing) HOT 3
- v1.x RFC: pull based approach HOT 5
- raft_start(): io: closed segment xxx is past last snapshot xxx HOT 4
- [question] Understanding how to add new servers HOT 15
- ./configure fails when no external dependency is found HOT 4
- Assertion: src/uv_truncate.c:168: UvTruncate: Assertion `index < uv->append_next_index' failed. HOT 3
- src/replication.c:457: getRequest: Assertion `req->type == type' failed. HOT 3
- Segment writes blocked when taking a snapshot. HOT 3
- src/log.c:87: refsTryInsert: Assertion `next_slot->term != term' failed. HOT 9
- Jepsen: Another truncate-related assertion failure
- [suggestion] add lock/unlock function pointers to raft_io (and use them) HOT 1
- `uvOsFallocateEmulation` taking too long time HOT 1
- CI: `xfs` test failures HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from raft.