Comments (3)
Hello,
Thanks for the question. By default, each update (PUT) is acked when it is processed by one node, and so if this node fails before gossiping the update to other replicas, the update will be lost.
Persistence can be achieved via the put_all
api that forces the PUT to be acked by all replicas before returning.
from fluent.
Hello,
Thanks for you answer.
After I read some code, I found gossiping period time is 10s by default.
// Define the gossip period (frequency)
#define PERIOD 10000000 // 10 seconds
During the period, only one replica's latest data can be seen by client, all other replica's data is not consistent with the replica which processed the PUT operation. This can be a problem for many application.
If client use put_all api, PUT performance can be a problem?
from fluent.
It is totally true that before the gossip, other replicas will serve stale versions to the clients, and there is actually a fundamental trade-off between staleness and performance in any coordination-free eventually consistent systems.
As you said, for certain applications, this staleness may not be tolerable. In this case we either have to reduce the gossip period (reduce the duration of staleness) or switch to a strongly consistent KVS (if the application cannot tolerate any staleness).
Interestingly, using put_all
still introduces staleness as the PUT and GET are uncoordinated. put_all
only increases the persistence of the updates.
from fluent.
Related Issues (20)
- Infinite recursion error from FaaS tier HOT 1
- Merge causal & non-causal modes
- DAG not found when there are multiple schedulers HOT 2
- Enable DAGs to contain multiple instances of the same function
- Enable non-sink functions within a DAG to write to KVS HOT 5
- AWS getting started depends on non namespaced env vars HOT 1
- Proposal: Create Docker containers for initialising an AWS cluster HOT 2
- [zeromqcpp] from 4.3.1, use recv taking a reference to message_t and recv_flags HOT 2
- Consider renaming the project HOT 1
- Suggestion: move to DaemonSet deployments for tasks required on every node HOT 2
- Suggestion: Use Horizontal Pod Autoscaler to manage cluster size HOT 2
- Unify lattices in C++ under a single template HOT 1
- A detailed document HOT 3
- can't find function_server.py
- Support for distributed transactions HOT 5
- shebangs should use python3, not python3.6
- Can't find kvs.pb.h in repository HOT 2
- No module named 'fluent.sender'
- Random KVS server ZMQ error 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 fluent.