You're assuming per DC has same total num_tokens, right? If I add a new node into DC1, will it change the tokens owned by DC2 and DC3?
2018-04-12 0:59 GMT+08:00 Jeff Jirsa <jji...@gmail.com>: > When you add DC3, they'll get tokens (that aren't currently in use in any > existing DC). Either you assign tokens (let's pretend we manually assigned > the other ones, since DC2 = DC1 + 1), but cassandra can also auto-calculate > them, the exact behavior of which varies by version. > > > Let's pretend it's old style random assignment, and we end up with DC3 > having 4, 17, 22, 36, 48, 53, 64, 73, 83 > > In this case: > > If you use SimpleStrategy and RF=3, a key with token 5 would be placed on > the hosts with token 10, 11, 17 > If you use NetworkTopologyStrategy with RF=3 per DC, a key with token 5 > would be placed on the hosts with tokens 10,20,30 ; 11, 21,31 ; 17, 22, 36 > > > > > On Wed, Apr 11, 2018 at 9:36 AM, Jinhua Luo <luajit...@gmail.com> wrote: >> >> What if I add a new DC3? >> The token ranges would reshuffled into DC1, DC2, DC3? >> >> 2018-04-11 22:06 GMT+08:00 Jeff Jirsa <jji...@gmail.com>: >> > Confirming again that it's definitely one ring. >> > >> > DC1 may have tokens 0, 10, 20, 30, 40, 50, 60, 70, 80 >> > DC2 may have tokens 1, 11, 21, 31, 41, 51, 61, 71, 81 >> > >> > If you use SimpleStrategy and RF=3, a key with token 5 would be placed >> > on >> > the hosts with token 10, 11, 20 >> > If you use NetworkTopologyStrategy with RF=3 per DC, a key with token 5 >> > would be placed on the hosts with tokens 10,20,30 and 11, 21,31 >> > >> > >> > >> > >> > >> > On Wed, Apr 11, 2018 at 6:27 AM, Jinhua Luo <luajit...@gmail.com> wrote: >> >> >> >> Is it a different answer? One ring? >> >> >> >> Could you explain your answer according to my example? >> >> >> >> 2018-04-11 21:24 GMT+08:00 Jonathan Haddad <j...@jonhaddad.com>: >> >> > There has always been a single ring. >> >> > >> >> > You can specify how many nodes in each DC you want and it’ll figure >> >> > out >> >> > how >> >> > to do it as long as you have the right snitch and are using >> >> > NetworkToploogyStrategy. >> >> > >> >> > >> >> > On Wed, Apr 11, 2018 at 6:11 AM Jinhua Luo <luajit...@gmail.com> >> >> > wrote: >> >> >> >> >> >> Let me clarify my question: >> >> >> >> >> >> Given we have a cluster of two DCs, each DC has 2 nodes, each node >> >> >> sets num_token as 50. >> >> >> Then how are token ranges distributed in the cluster? >> >> >> >> >> >> If there is one global ring, then it may be (To simply the case, >> >> >> let's >> >> >> assume vnodes=1): >> >> >> {dc1, node1} 1-50 >> >> >> {dc2, node1} 51-100 >> >> >> {dc1, node1} 101-150 >> >> >> {dc1, node2} 151-200 >> >> >> >> >> >> But here comes more questions: >> >> >> a) what if I add a new datacenter? Then the token ranges need to be >> >> >> re-balanced? >> >> >> If so, what about the data associated with the ranges to be >> >> >> balanced? >> >> >> move them among DCs? >> >> >> But that doesn't make sense, because each keyspace would specify its >> >> >> snith and fix the DCs to store then. >> >> >> >> >> >> b) It seems no benefits from same ring, because of the snith. >> >> >> >> >> >> If each DC has own ring, then it may be: >> >> >> {dc1, node1} 1-50 >> >> >> {dc1, node1} 51-100 >> >> >> {dc2, node1} 1-50 >> >> >> {dc2, node1} 51-100 >> >> >> >> >> >> I think this is not a trivial question, because each key would be >> >> >> hashed to determine the token it belongs to, and >> >> >> the token range distribution in turns determine which node the key >> >> >> belongs >> >> >> to. >> >> >> >> >> >> Any official answer? >> >> >> >> >> >> >> >> >> 2018-04-11 20:54 GMT+08:00 Jacques-Henri Berthemet >> >> >> <jacques-henri.berthe...@genesys.com>: >> >> >> > Maybe I misunderstood something but from what I understand, each >> >> >> > DC >> >> >> > have >> >> >> > the same ring (0-100 in you example) but it's split differently >> >> >> > between >> >> >> > nodes in each DC. I think it's the same principle if using vnode >> >> >> > or >> >> >> > not. >> >> >> > >> >> >> > I think the confusion comes from the fact that the ring range is >> >> >> > the >> >> >> > same (0-100) but each DC manages it differently because nodes are >> >> >> > different. >> >> >> > >> >> >> > -- >> >> >> > Jacques-Henri Berthemet >> >> >> > >> >> >> > -----Original Message----- >> >> >> > From: Jinhua Luo [mailto:luajit...@gmail.com] >> >> >> > Sent: Wednesday, April 11, 2018 2:26 PM >> >> >> > To: user@cassandra.apache.org >> >> >> > Subject: Re: does c* 3.0 use one ring for all datacenters? >> >> >> > >> >> >> > Thanks for your reply. I also think separate rings are more >> >> >> > reasonable. >> >> >> > >> >> >> > So one ring for one dc is only for c* 1.x or 2.x without vnode? >> >> >> > >> >> >> > Check these references: >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > https://docs.datastax.com/en/archived/cassandra/1.1/docs/initialize/token_generation.html >> >> >> > http://www.luketillman.com/one-token-ring-to-rule-them-all/ >> >> >> > >> >> >> > >> >> >> > >> >> >> > https://community.apigee.com/articles/13096/cassandra-token-distribution.html >> >> >> > >> >> >> > Even the riak official said c* splits the ring across dc: >> >> >> > >> >> >> > >> >> >> > >> >> >> > http://basho.com/posts/business/riak-vs-cassandra-an-updated-brief-comparison/ >> >> >> > >> >> >> > Why they said each dc has its own ring? >> >> >> > >> >> >> > >> >> >> > 2018-04-11 19:55 GMT+08:00 Jacques-Henri Berthemet >> >> >> > <jacques-henri.berthe...@genesys.com>: >> >> >> >> Hi, >> >> >> >> >> >> >> >> Each DC has the whole ring, each DC contains a copy of the same >> >> >> >> data. >> >> >> >> When you add replication to a new DC, all data is copied to the >> >> >> >> new >> >> >> >> DC. >> >> >> >> >> >> >> >> Within a DC, each range of token is 'owned' by a (primary) node >> >> >> >> (and >> >> >> >> replicas if you have RF > 1). If you add/remove a node in a DC, >> >> >> >> tokens will >> >> >> >> be rearranged between all nodes within the DC only, the other DCs >> >> >> >> won't be >> >> >> >> affected. >> >> >> >> >> >> >> >> -- >> >> >> >> Jacques-Henri Berthemet >> >> >> >> >> >> >> >> -----Original Message----- >> >> >> >> From: Jinhua Luo [mailto:luajit...@gmail.com] >> >> >> >> Sent: Wednesday, April 11, 2018 12:35 PM >> >> >> >> To: user@cassandra.apache.org >> >> >> >> Subject: does c* 3.0 use one ring for all datacenters? >> >> >> >> >> >> >> >> Hi All, >> >> >> >> >> >> >> >> I know it seems a stupid question, but I am really confused about >> >> >> >> the >> >> >> >> documents on the internet related to this topic, especially it >> >> >> >> seems >> >> >> >> that it >> >> >> >> has different answers for c* with vnodes or not. >> >> >> >> >> >> >> >> Let's assume the token range is 1-100 for the whole cluster, how >> >> >> >> does >> >> >> >> it distributed into the datacenters? Think that the number of >> >> >> >> datacenters is >> >> >> >> dynamic in a cluster, if there is only one ring, then the token >> >> >> >> range would >> >> >> >> change on each node when I add a new datacenter into the cluster? >> >> >> >> Then it >> >> >> >> would involve data migration? It doesn't make sense. >> >> >> >> >> >> >> >> Looking forward to clarification for c* 3.0, thanks! >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> >> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> >> >> >> For additional commands, e-mail: user-h...@cassandra.apache.org >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> >> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> >> >> >> For additional commands, e-mail: user-h...@cassandra.apache.org >> >> >> > >> >> >> > >> >> >> > --------------------------------------------------------------------- >> >> >> > To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> >> >> > For additional commands, e-mail: user-h...@cassandra.apache.org >> >> >> > >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> >> >> For additional commands, e-mail: user-h...@cassandra.apache.org >> >> >> >> >> > >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> >> For additional commands, e-mail: user-h...@cassandra.apache.org >> >> >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >> For additional commands, e-mail: user-h...@cassandra.apache.org >> > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org For additional commands, e-mail: user-h...@cassandra.apache.org