Currently I am setting up 6 Cassandra nodes (with 3 nodes in DC1 and 3 nodes in DC2) with replication factor=3.
The objective is for temporal connects to Cassandra in DC1 only and able to work with only 1 node in 1 DC so when all nodes in DC2 are not available and 2 nodes in DC1 not available.
I believe in order to achieve this is to set the Consistency Level to LOCAL_ONE, however I am stuck with Serial Consistency where it can only accept SERIAL and LOCAL_SERIAL (cannot accept ONE or LOCAL_ONE) which needs 2 replicas to work.
Is there a way to achieve the objective where temporal can still work with only 1 Cassandra node in DC1?
Thanks & regards,
I think your question is more related to Cassandra than to Temporal.
Cassandra has ConsistencyLevel(CS) as an attribute for each operation you are willing to do against it, and ReplicationFactor(RF) as an attribute of the data itself.
The are both related and work together to achieve the desirable data consistency.
If you want to be able to run with only 1 instance of Cassandra (no matter how many DCs you have), the only way to achieve this is using RF equals to the DC member instances. That will mean data is store along all the members of the DC.
In that case, CS should be ANY or ONE to have a successful operation agains the Cassandra cluster.
You can take a look at How is the consistency level configured? to understand more.
Just to add,
able to work with only 1 node in 1 DC so when all nodes in DC2 are not available and 2 nodes in DC1 not available.
Temporal uses LOCAL_QUORUM consistency level, so if your replication factory is 3 then each query read/write would need to be accepted by at least two Cassandra hosts.
where temporal can still work with only 1 Cassandra node in DC1?
Yes you should be able to configure Temporal for this scenario, but note that its pretty fragile situation as any data inconsistencies may put the service in a bad state.