Cassandra is being used on a large scale at Uber. We usually create dedicated clusters for each of our internal use cases, however that is difficult to scale and manage.
We are investigating the approach of using a single shared cluster with 100s of nodes and handle 10s to 100s of different use cases for different products in the same cluster. We can define different keyspaces for each of them, but that does not help in case of noisy neighbors. Does anybody in the community have similar large shared clusters and/or face noisy neighbor issues? Is there a way to throttle read and write queries in Cassandra currently? If not, what would be the right place in the code to implement a pluggable interface for doing it. I have briefly considered using triggers, but that is invoked only in the write path. The initial goal is to have a custom pluggable class which would be a no-op. We would like to enforce these rate limits per table and for different query types (point or range queries, or LWT) separately. Thank you in advance. -Abhishek.