Asynchronous Transport for Cassandra
summary
A Java team at Odnoklassniki moved Cassandra request coordination into FatClients — making clients full cluster participants to cut network hops and offload coordinator work — but hit scale limits in Cassandra’s transport when thousands of nodes and clients were involved. The talk describes their own asynchronous Cassandra transport implemented in pure Java using NIO and a compact Actor Model, covering its design, optimizations, encountered problems, and the rollout of the async transport into production to save resources and simplify development.
AI-written summary · about
chapters (27)
- 0:00Introduction
- 1:50Transport issues in Cassandra
- 3:36Synchronous transport drawbacks
- 4:42FatClient pattern at Odnoklassniki
- 7:07Cassandra internal transport problems
- 8:58Goals of async transport
- 10:22New transport architecture
- 13:31Actors for async
- 16:20Actors in Java example
- 20:13Actor hierarchy in transport
- 21:41New transport benchmarks
- 24:10Socket optimization
- 25:16Actor performance issues
- 27:05Context switch optimization
- 29:11Transport benchmarks results
- 30:14Production deployment problems
- 32:21TCP latency analysis
- 33:25Coordinator flaps issues
- 34:28Flap causes analysis
- 35:51Locking and GC problems
- 36:55Java NIO memory leaks
- 38:00Non-breaking connections issues
- 39:01Echo messages problems
- 39:45New transport results
- 40:53Project conclusions
- 41:55Cassandra 4.0 comparison
- 43:21Q&A
related talks
20mApache Cassandra Sidecar: The Companion for Use Cases in Cassandra
49mNeed for ASYNC: in pursuit of scalable internet-scale applications
54mEvolving Transactions in Apache Cassandra
29mCassandra - an introduction
18mReal-time adaptive controls for resilient container workloads
21mLightning fast cluster computing with Cassandra and Spark
40mApache Cassandra in High-Performance Systems Development
39mMaking Cassandra Faster in Cloud-native architecture
