Code Monkey home page Code Monkey logo

Comments (15)

avinashZato avatar avinashZato commented on September 28, 2024

Hi Akbar,

I couldn't find material on DynomiteDB or on other forums for the following questions:

  1. How are the tokens re-calculated when a node joins/ leaves the cluster?
  2. How is the data rebalanced after the tokens are re-calculated? Is this even a Dynomite concern?

Any pointers will really help.

from dynomite-manager.

akbarahmed avatar akbarahmed commented on September 28, 2024

@avinashZato

  • Node tokens are calculated when the cluster is first created. Then, when a node is replaced (ex. if a node fails), the new node queries the list of node tokens to find a previously failed token. It allocates the previously failed token to itself, and begins an automated recovery process. Once the node is full healed, it rejoins the cluster automatically.
  • When a node leaves the cluster (ex. when it fails), the Dyno client will be notified of the failure due to failed health checks and will direct traffic away from the failed node...until it is brought back online.
  • If you are adding a single node, say with a minor scale up, then this is currently not an automated process. There is ongoing work to allow automated scale up with rebalancing by doubling the cluster size. Please add a watch to the project on GH to be notified when this PR is submitted.
  • Automated data rebalancing is not currently implemented.

Typically, you'll deploy a Dynomite cluster with a somewhat fixed size. However, as mentioned above, there is active work to automate the scale up/down process.

from dynomite-manager.

avinashZato avatar avinashZato commented on September 28, 2024

Appreciate your quick response here @akbarahmed !
Our deployment falls in category three that you've listed above where we incrementally add nodes.

To give you some context, we typically have an on-premise deployment where the customer would typically start with N nodes each with a capacity of C. Depending on the load a new Node N1 will be added with the same capacity C.

For approach three (the manual process), we'll probably follow the steps recommended by @Minh in #173 .

If it isn't too much to ask do you have a tentative date for when the PR would be submitted?

from dynomite-manager.

akbarahmed avatar akbarahmed commented on September 28, 2024

There's no ETA for when the PR will be ready.

from dynomite-manager.

ipapapa avatar ipapapa commented on September 28, 2024

@avinashZato I am not following why Dynomite needs to follow the diurnal pattern of the client. In fact, if you plan to scale up then you need to scale down, and generally speaking stateful systems must not follow that pattern because data can get out of sync.

If you are using Dynomite as a cache, then it means that you set a short TTL on the data. Hence the Dyno dual write functionality would probably solve your problem. In other words, you will bring a new Dynomite cluster that has some extra capacity, dual write to it, then take the older cluster down once the data have expired. The same way can work for scaling down.

from dynomite-manager.

ipapapa avatar ipapapa commented on September 28, 2024

@akbarahmed I like a lot having the DynamoDB DAO because it supports cross-region replication and you do not need another system outside of AWS. In case of region outage, we can move everything to another region and still have the tokens to come back to the failed region. This was the idea behind the Cassandra DAO. @diegopacheco was also considering changing the Astyanax to the Datastax Java Driver, which would make the DAO a little more standardized, but I am not sure how far he got with it.

from dynomite-manager.

diegopacheco avatar diegopacheco commented on September 28, 2024

@ipapapa not much far yet.

from dynomite-manager.

diegopacheco avatar diegopacheco commented on September 28, 2024

@ipapapa This is working in progress. You can follow progress here https://github.com/diegopacheco/dynomite-manager-1/tree/dev-datastax-javadriver I will fire a PR once I'm done. :-)

from dynomite-manager.

ipapapa avatar ipapapa commented on September 28, 2024

DynamoDB does not actually support bi-directional cross-region replication (only one way). More info. Hence at this point, I do not see any reason to pursue the DynamoDB DAO. We can revisit this one bi-directional replication is added.

from dynomite-manager.

posix4e avatar posix4e commented on September 28, 2024

This claims it is full multi region , can we reopen this?https://aws.amazon.com/dynamodb/global-tables/

from dynomite-manager.

ipapapa avatar ipapapa commented on September 28, 2024

@posix4e Done. It would be really nice to see the DAO being added.

from dynomite-manager.

posix4e avatar posix4e commented on September 28, 2024

dao?

from dynomite-manager.

ipapapa avatar ipapapa commented on September 28, 2024

DAO = Data Access Object. It is a Java design pattern. More information: https://www.oracle.com/technetwork/java/dataaccessobject-138824.html

from dynomite-manager.

srinivas-c avatar srinivas-c commented on September 28, 2024

@ipapapa , @akbarahmed
Any update on supporting DynamoDB for token management. We will be eager to use this :)

Thanks in advance

from dynomite-manager.

srinivas-c avatar srinivas-c commented on September 28, 2024

Hi,

I submitted a pull request for DynamoDB support, the only piece missing is integrating dynamodb with Florida. Can you review and share comments if any
#114

Thanks

from dynomite-manager.

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.