🧸 ELI5 · 分布式基石

Apache Cassandra 到底是什么?
为什么拔掉任意一台服务器网线它都不会死?

想象圆桌骑士会议:这里没有国王、没有发号施令的皇帝。所有骑士围成一个大圆环,每个人地位绝对平等。哪怕其中几个骑士睡着或负伤了,其他骑士照样能把全国大事商量得妥妥当当!

🥊 核心对比:传统“主从架构” vs Cassandra“无主对等环”
👑 传统主从架构 (Master-Slave)

皇帝与随从模式: 只有 Master(主节点)负责写,Slave 只能默默复制读。

💥 致命单点风险: 一旦 Master 宕机或网络分区,全系统写不可用,必须选主(Failover),期间系统抖动!

💥 写瓶颈死穴: 写入请求全砸给皇帝一人,无法横向平摊写入压力。

单点崩溃风险 选主停机等待 写入无法水平扩展
VS
⭕ Cassandra 无主环形架构 (Peer-to-Peer)

圆桌自治模式: 所有节点平等对等,首尾相接组成一个一致性哈希 Token 环。

✨ 零单点故障: 客户端连上哪台,哪台就是当次操作的“协调者(Coordinator)”。

✨ 写入横向无限扩张: 节点越多,整个集群的写入 QPS 呈线性直接翻倍!

✨ 高可用容灾: 副本多机房分散,哪怕死掉一两个节点,数据依然在其他副本完好无损。

绝对平等 永不宕机 线性写扩展
🗺️ 视觉透视:为什么 Cassandra 写入速度快如闪电?

在传统数据库里,写入要跑到磁盘到处找空位“随机改写”;而 Cassandra 坚决不改原文件,所有新数据先进内存 Memtable,顺手往磁盘记一笔连续的日志 CommitLog,然后直接告诉客户端“写好了”!

写入请求 INSERT INTO ... 1. CommitLog (磁盘) 像流水账一样纯追加写 顺序写速度极快,断电不丢 2. Memtable (内存) 有序存储在 RAM 里 立刻向客户端返回 OK (1ms) 异步刷盘 3. SSTable 文件群 (磁盘持久化) SSTable 1 (只读不可变文件) SSTable 2 (后台自动 Compaction 合并) 配有 Bloom Filter 布隆过滤器极速探针
🗣️

1. Gossip 八卦协议

集群里的节点之间每秒都在互相传递“八卦传闻”。谁的网线被拔了、谁重新上线了,短短几百毫秒内全网几百台机器就能达成共识,完全不需要中心调度服务器。

⚖️

2. 可调一致性 (Tunable Consistency)

你可以自由选择业务的一致性级别:追求极致速度可以设置 QUORUM 或 ONE;利用数学公式 $R + W > N$(读节点数+写节点数>总副本数),就能在最终一致性系统上保证强一致性!

🌍

3. 天生支持跨数据中心多活

很多数据库做跨大洲多活需要昂贵的插件和复杂的专线同步;Cassandra 出生那一天就原生支持多机房意识(Rack / DC Aware),一份数据在北京,两份数据在法兰克福,网络切断后自动断点续传(Hinted Handoff)。

🎮 互动沙盘:动手搞挂一个节点,看看系统怎么运转?

下方是 4 个对等节点组成的 Cassandra Token 环。你可以点击任意圆球模拟拔掉网线(故障),或者点击“发送一次读写操作”观察协调者与法定人数(Quorum):

Cassandra Token 环
全员在线 (4/4)
节点 A Token 0%
节点 B Token 25%
节点 C Token 50%
节点 D Token 75%
提示:点击上方任意节点圆球可将其击落(变红)。
身世渊源

Facebook 献给开源界的瑰宝

Cassandra 最早由 Facebook 工程师为了解决收件箱海量搜索而设计,完美融合了 Amazon Dynamo 的去中心化无主环 与 Google BigTable 的列族与 LSM-Tree 存储,后来开源贡献给了 Apache 基金会。

现代工业级规模

Apple 与 Netflix 的万台集群

苹果公司运行着数以万计节点的 Cassandra,用来支撑数亿用户的 iCloud 同步;Netflix 用它存储全人类所有观众的播放进度和点播历史,每日承受千亿次调用而稳如泰山。

兄弟传承

与 ScyllaDB 的羁绊

Cassandra 用 Java 编写,因而在极高吞吐下常受 JVM GC 卡顿困扰。这也正是我们前一期介绍的 ScyllaDB 用 C++ 重写它、全面兼容其 CQL 协议并开创新时代的缘起!