Skip to content
返回部署

部署 Cassandra

分布式 NoSQL DB,高写吞吐、多区域和线性扩展。

平台高级

为什么

Cassandra 为商品硬件高写吞吐设计,无单点故障。一致哈希分布数据,可调一致性。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

时间序列、IoT 和写密集多区域工作负载用 Cassandra。即席查询(CQL 有限)避免。

如何做

1. Docker — cassandra:4 镜像 2. 集群 — 3+ 节点,同 seed 节点 3. Keyspace — 复制因子和策略 4. 表 — CQL CREATE TABLE 配分区键 5. 复制 — NetworkTopologyStrategy 多 DC 6. 压实 — SizeTiered 或 Leveled 压实策略 7. CQL — cqlsh 或驱动查询

示例

# docker-compose.yml — 3 节点集群 services: cass1: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } } cass2: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } } cass3: { image: cassandra:4, environment: { CASSANDRA_SEEDS: "cass1" } } # 创建 keyspace 和表 cqlsh cass1 9042 -e " CREATE KEYSPACE myapp WITH replication = {'class':'SimpleStrategy','replication_factor':3}; CREATE TABLE myapp.events (id uuid, ts timestamp, data text, PRIMARY KEY (id, ts)); " # 插入和查询 cqlsh cass1 9042 -e "INSERT INTO myapp.events (id, ts, data) VALUES (now(), toTimestamp(now()), 'hello'));" cqlsh cass1 9042 -e "SELECT * FROM myapp.events;"

常见问题

  • ⚠单节点无 HA — 仅开发,生产需 3+ 节点
  • ⚠分区键差 — 热点,选均匀分布的键
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓3+ 节点复制因子 3 — 容忍 1 节点故障
  • ✓schema 为查询设计 — Cassandra 查询优先,无即席 join
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答