Hello,

We currently have 3 Cassandra servers running in a single datacenter with a
replication factor of 3 for our keyspace. We also use the SimpleSnitch
wiith DynamicSnitching enabled by default. Our load balancing policy is
TokenAwareLoadBalancingPolicy with RoundRobinPolicy as the child. This
overall configuration results in our client requests spreading equally
across our 3 servers.

However, we have a new requirement where we need to restrict a client's
requests to a single server and only go to the other servers on failure of
the previous server. This particular use case does not have high request
traffic.

Looking at the documentation the options we have seem to be:

1. Play with the snitching (e.g. place each server into its own DC or Rack)
to ensure that requests always go to one server and failover to the others
if required. I understand that this may also affect replica placement and
we may need to run nodetool repair. So this is not our most preferred
option.

2. Write a new load balancing policy that also uses the HostStateListener
for tracking host up and down messages, that essentially accomplishes
"sticky" request routing with failover to other nodes.

Is option 2 the only clean way of accomplishing our requirement?

Thanks,
Micky

Reply via email to