Code Monkey home page Code Monkey logo

Comments (3)

cw75 avatar cw75 commented on June 16, 2024

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.

rockspring avatar rockspring commented on June 16, 2024

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.

cw75 avatar cw75 commented on June 16, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.