https://www.cockroachlabs.com/blog/multi-cloud-deployment/ https://www.datastax.com/dev/blog/multi-datacenter-replication
In both you'd use service discovery, DNS with application environment variables in each datacenter to discover the local DB servers. In Cassandra you also tell it to limit connections to the local DC by setting a policy in the driver.
For option3, you typically have an abstraction layer over two connections, one for the writes one for the reads. Depending on which request gets made your application code would need to route the query to the correct DB connection.