1. ScyllaDB 的 Seastar 无锁异步框架与性能
ScyllaDB 的 Seastar 无锁异步框架是如何设计并带来性能提升的?
- Seastar 的无共享(shared-nothing)模型
- 无锁与异步设计的原理
- 与 Cassandra 的 JVM 实现对比
Seastar 是一种基于无共享(shared-nothing)模型的异步框架,每个 CPU 核独立运行一个"分片"(shard),每个分片拥有自己的内存、网络连接和数据结构,线程之间几乎不共享状态,因此避免了锁竞争和跨核缓存失效。每个核运行独立的异步事件循环,通过非阻塞(non-blocking)的 DMA 与批量 I/O 提交,配合自身的无锁队列与原子操作,将吞吐量推高。相比 Cassandra 依赖 JVM 的 GC 停顿和加锁的数据结构,ScyllaDB 通过 Seastar 实现了无 GC、可预测的低延迟和更高的单核吞吐。
锁竞争和 GC 停顿是分布式数据库延迟抖动的主要来源。ScyllaDB 用 Seastar 把每个核做成一个独立的"迷你数据库",通过网络栈(如 OSV 的 TCP/IP 栈)分摊开销,从而在相同硬件上获得远高于 Cassandra 的性能。