On 6/17/2011 10:31 AM, Eric tamme wrote:
What I don't like about NTS is I would have to have more replicas than I
need.  {DC1=2, DC2=2}, RF=4 would be the minimum.  If I felt that 2 local
replicas was insufficient, I'd have to move up to RF=6 which seems like a
waste... I'm predicting data in the TB range so I'm trying to keep replicas
to a minimum.

My goal is to have 2-3 replicas in a local data center and 1 replica in
another dc.  I think that would be enough barring a major catastrophe.  But,
I'm not sure this is possible.  I define "local" as in the same data center
as the client doing the insert/update.
Yes, not being able to configure the replication factor differently
for each data center is a bit annoying.  Im assuming you basically
want DC1 to have a replication factor of {DC1:2, DC2:1} and DC2 to
have {DC1:1,DC2:2}.

Yes. But, the more I think about it, the more I see issues. Here is what I envision (Issues marked with *):

Three or more dc's, each serving as fail-overs for the others with 1 maximum unavailable dc supported at a time.
Each dc is a production dc serving users that I choose.
Each dc also stores 0-1 replicas from the other dc's.
Direct customers to their "home" dc of my choice.
Data coming from the client local to the dc is replicated X times in the local dc and 1 time in any other dc (randomly). In the even a dc becomes unreachable by users, an arbitrary fail-over dc can serve their requests albeit with increased latency. *There will only be 1 replica left amongst the remaining fail-over dc's, so this could be a problem depending on the CL used other than CL.ONE. *During the fail-over state, the cluster needs to know that the real "home" of the replicas belongs to the currently unavailable dc. But, as of now, I don't think that's possible and so new writes will start to be replicated in the current dc as if the currently-used fail-over dc is the home dc.

Maybe these goals can be achieve with a kind of ordered asymmetrical replication strategy like you illustrated above. The hard part will be to figure out a simple and elegant way to do this w/o undermining C*.


I would very much like that feature as well, but I dont know the
feasibility of it.

-Eric


Reply via email to