全部笔记All notes

Cassandra 分布式数据库配置指南

阅读 12m 01s12m 01s read

概述

Apache Cassandra 是一个高度可扩展的分布式 NoSQL 数据库,专为处理大量数据而设计。具有以下特点:

  • 高可用性:去中心化架构,无单点故障
  • 线性扩展:可轻松添加节点扩展容量
  • 强一致性:可调节的一致性级别
  • 高性能:针对写入操作进行优化

💡 提示: Cassandra 特别适合需要高写入吞吐量的应用场景,如日志记录、时间序列数据等。

环境准备

系统要求

  • Docker 20.10+
  • 内存:至少 2GB RAM
  • 存储:SSD 推荐
  • 网络:稳定的网络连接

依赖检查

# 检查 Docker 版本
docker --version

# 检查可用内存
free -h

# 检查磁盘空间
df -h

Docker 部署

单节点部署

# 创建Docker网络
docker network create cassandra-net

# 创建 Cassandra 容器
docker run -d \
  --name cassandra \
  --hostname cassandra \
  --network cassandra-net \
  -e CASSANDRA_CLUSTER_NAME="Test Cluster" \
  -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch \
  -e CASSANDRA_DC=datacenter1 \
  -p 9042:9042 \
  cassandra:4.1

环境变量说明

变量说明默认值
CASSANDRA_CLUSTER_NAME集群名称Test Cluster
CASSANDRA_ENDPOINT_SNITCH端点侦察器SimpleSnitch
CASSANDRA_DC数据中心名称datacenter1
CASSANDRA_SEEDS种子节点第一个节点IP

集群部署

# 创建 Docker 网络
docker network create cassandra-net

# 第一个节点
docker run -d \
  --name cassandra-node1 \
  --network cassandra-net \
  -e CASSANDRA_CLUSTER_NAME="Production Cluster" \
  -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch \
  -e CASSANDRA_DC=datacenter1 \
  -e CASSANDRA_RACK=rack1 \
  -p 9042:9042 \
  cassandra:4.1

# 等待第一个节点启动
sleep 60

# 第二个节点
docker run -d \
  --name cassandra-node2 \
  --network cassandra-net \
  -e CASSANDRA_CLUSTER_NAME="Production Cluster" \
  -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch \
  -e CASSANDRA_DC=datacenter1 \
  -e CASSANDRA_RACK=rack1 \
  -e CASSANDRA_SEEDS=cassandra-node1 \
  cassandra:4.1

基本配置

连接验证

# 进入 Cassandra 容器
docker exec -it cassandra cqlsh

# 或者使用认证连接
docker exec -it cassandra cqlsh -u cassandra -p cassandra

基本 CQL 操作

-- 创建 keyspace
CREATE KEYSPACE IF NOT EXISTS test_keyspace
WITH REPLICATION = {
  'class': 'SimpleStrategy',
  'replication_factor': 1
};

-- 使用 keyspace
USE test_keyspace;

-- 创建表
CREATE TABLE users (
  id UUID PRIMARY KEY,
  name TEXT,
  email TEXT,
  created_at TIMESTAMP
);

-- 插入数据
INSERT INTO users (id, name, email, created_at)
VALUES (uuid(), 'John Doe', 'john@example.com', toTimestamp(now()));

-- 查询数据
SELECT * FROM users;

数据操作

数据类型

类型描述示例
TEXT文本字符串‘Hello World’
INT32位整数123
BIGINT64位整数1234567890
UUID通用唯一标识符uuid()
TIMESTAMP时间戳‘2025-01-01 00:00:00’
BOOLEAN布尔值true/false
LIST列表[‘item1’, ‘item2’]
MAP映射{‘key’: ‘value’}

批量操作

-- 批量插入(注意:每次执行会生成不同的UUID)
BEGIN BATCH
  INSERT INTO users (id, name, email) VALUES (uuid(), 'User1', 'user1@example.com');
  INSERT INTO users (id, name, email) VALUES (uuid(), 'User2', 'user2@example.com');
  INSERT INTO users (id, name, email) VALUES (uuid(), 'User3', 'user3@example.com');
APPLY BATCH;

-- 如果需要相同的UUID,先生成再使用:
-- INSERT INTO users (id, name, email) VALUES (550e8400-e29b-41d4-a716-446655440000, 'User1', 'user1@example.com');

索引管理

-- 创建二级索引
CREATE INDEX ON users (email);

-- 查看所有索引
DESCRIBE TABLE users;

-- 删除索引(需要实际索引名)
DROP INDEX IF EXISTS keyspace_name.index_name;

性能优化

分区键设计

🔧 配置: 选择合适的分区键对性能至关重要

-- 好的分区键设计
CREATE TABLE user_events (
  user_id UUID,
  event_time TIMESTAMP,
  event_type TEXT,
  event_data TEXT,
  PRIMARY KEY (user_id, event_time)
) WITH CLUSTERING ORDER BY (event_time DESC);

压缩策略

-- 设置压缩策略
ALTER TABLE users WITH compression = {
  'class': 'LZ4Compressor',
  'chunk_length_in_kb': 64
};

缓存配置

-- 启用行缓存
ALTER TABLE users WITH caching = {
  'keys': 'ALL',
  'rows_per_partition': '100'
};

高级特性

物化视图(Materialized Views)

物化视图允许你基于现有表创建自动维护的查询表:

-- 创建基础表
CREATE TABLE user_activity (
  user_id UUID,
  activity_time TIMESTAMP,
  activity_type TEXT,
  activity_data TEXT,
  PRIMARY KEY (user_id, activity_time)
);

-- 创建物化视图
CREATE MATERIALIZED VIEW user_activity_by_type AS
  SELECT * FROM user_activity
  WHERE activity_type IS NOT NULL AND user_id IS NOT NULL AND activity_time IS NOT NULL
  PRIMARY KEY (activity_type, activity_time, user_id);

-- 现在可以高效查询特定类型的活动
SELECT * FROM user_activity_by_type WHERE activity_type = 'login';

用户定义类型(UDT)

创建复杂的数据结构:

-- 创建地址类型
CREATE TYPE address (
  street TEXT,
  city TEXT,
  state TEXT,
  zip_code TEXT,
  country TEXT
);

-- 使用 UDT
CREATE TABLE users_with_address (
  id UUID PRIMARY KEY,
  name TEXT,
  email TEXT,
  home_address frozen<address>,
  work_address frozen<address>
);

-- 插入数据
INSERT INTO users_with_address (id, name, email, home_address)
VALUES (
  uuid(),
  'John Doe',
  'john@example.com',
  {street: '123 Main St', city: 'New York', state: 'NY', zip_code: '10001', country: 'USA'}
);

用户定义函数(UDF)

⚠️ 注意: 使用UDF前需要在cassandra.yaml中启用:

enable_user_defined_functions: true
enable_scripted_user_defined_functions: true  # 如果使用脚本语言

创建自定义函数扩展 CQL 功能:

-- 创建简单的字符串函数
CREATE OR REPLACE FUNCTION capitalize(input TEXT)
  RETURNS NULL ON NULL INPUT
  RETURNS TEXT
  LANGUAGE java
  AS $$
    return input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase();
  $$;

-- 使用函数
SELECT id, capitalize(name) as capitalized_name FROM users;

时间序列数据处理

Cassandra 特别适合时间序列数据:

-- 时间序列表设计
CREATE TABLE sensor_data (
  sensor_id TEXT,
  bucket_date DATE,
  reading_time TIMESTAMP,
  temperature DOUBLE,
  humidity DOUBLE,
  pressure DOUBLE,
  PRIMARY KEY ((sensor_id, bucket_date), reading_time)
) WITH CLUSTERING ORDER BY (reading_time DESC)
  AND default_time_to_live = 2592000  -- 30天TTL
  AND gc_grace_seconds = 864000;      -- 10天

-- 写入数据
INSERT INTO sensor_data (sensor_id, bucket_date, reading_time, temperature, humidity, pressure)
VALUES ('sensor-001', '2025-01-14', toTimestamp(now()), 25.5, 60.2, 1013.25);

-- 查询特定时间范围
SELECT * FROM sensor_data 
WHERE sensor_id = 'sensor-001' 
  AND bucket_date = '2025-01-14'
  AND reading_time > '2025-01-14 10:00:00'
  AND reading_time < '2025-01-14 11:00:00';

轻量级事务(LWT)

使用 IF 条件实现类似 ACID 的操作:

-- 条件插入(如果不存在)
INSERT INTO users (id, name, email)
VALUES (uuid(), 'Jane Doe', 'jane@example.com')
IF NOT EXISTS;

-- 条件更新
UPDATE users 
SET email = 'newemail@example.com'
WHERE id = 123e4567-e89b-12d3-a456-426614174000
IF email = 'oldemail@example.com';

-- 条件删除
DELETE FROM users
WHERE id = 123e4567-e89b-12d3-a456-426614174000
IF email = 'jane@example.com';

最佳实践

数据建模原则

  1. 查询驱动设计

    • 先设计查询,再设计数据模型
    • 一个查询对应一个表(反范式化)
    • 避免使用二级索引进行高频查询
  2. 分区键选择

    • 确保数据均匀分布
    • 避免热点分区
    • 合理控制分区大小(建议不超过100MB)
  3. 时间分桶策略

    -- 按月分桶示例
    CREATE TABLE events_by_month (
      event_type TEXT,
      year_month TEXT,  -- 格式: '2025-01'
      event_time TIMESTAMP,
      event_data TEXT,
      PRIMARY KEY ((event_type, year_month), event_time)
    );

性能调优建议

  1. 批量操作优化

    • 限制批量大小(建议5-15条)
    • 使用 UNLOGGED BATCH 提高性能(注意:无原子性保证)
    • 避免跨分区批量操作
  2. 读取优化

    • 使用分页查询避免大量数据传输
    • 合理设置 LIMIT 值
    • 使用 TOKEN 函数进行范围扫描
  3. 写入优化

    -- 使用 TTL 自动清理过期数据
    INSERT INTO events (id, data) 
    VALUES (uuid(), 'event data') 
    USING TTL 86400;  -- 24小时后自动删除
    
    -- 使用异步写入
    CONSISTENCY LOCAL_ONE;

集群管理最佳实践

  1. 节点扩容

    • 使用 vnodes(虚拟节点)简化扩容
    • 新节点加入前执行 repair
    • 监控数据迁移进度
  2. 数据一致性

    • 定期运行 repair 操作
    • 合理设置一致性级别
    • 使用 LOCAL_QUORUM 平衡性能和一致性
  3. 备份策略

    # 创建定期备份脚本
    #!/bin/bash
    BACKUP_DIR="/backup/cassandra/$(date +%Y%m%d)"
    mkdir -p $BACKUP_DIR
    
    # 创建快照
    docker exec cassandra nodetool snapshot -t backup_$(date +%Y%m%d_%H%M%S)
    
    # 复制快照文件
    docker cp cassandra:/var/lib/cassandra/data $BACKUP_DIR/

安全配置

  1. 认证和授权

    -- 创建新用户
    CREATE USER app_user WITH PASSWORD 'strong_password';
    
    -- 授予权限
    GRANT SELECT ON test_keyspace.users TO app_user;
    GRANT MODIFY ON test_keyspace.users TO app_user;
    
    -- 撤销权限
    REVOKE MODIFY ON test_keyspace.users FROM app_user;
  2. 网络安全

    • 启用节点间加密
    • 配置客户端加密
    • 使用防火墙限制访问

监控指标

重要监控指标:

  • 读写延迟: 99th percentile latency
  • 待处理任务: Pending compactions, flushes
  • 磁盘使用: 空间使用率和增长趋势
  • GC 暂停: GC pause time and frequency
  • 连接数: Active client connections

生产环境部署指南

硬件要求与规划

最小配置(单节点)

  • CPU: 8 核心以上
  • 内存: 32GB RAM(建议 64GB)
  • 存储: SSD 至少 1TB
  • 网络: 千兆以太网

推荐配置(生产集群)

  • CPU: 16-32 核心
  • 内存: 64-128GB RAM
  • 存储: NVMe SSD 2-4TB
  • 网络: 万兆以太网

集群规模规划

小型集群(< 10TB)
├── 节点数:3-6 个
├── 副本因子:3
└── 一致性级别:QUORUM

中型集群(10-100TB)
├── 节点数:6-20 个
├── 副本因子:3
├── 数据中心:1-2 个
└── 一致性级别:LOCAL_QUORUM

大型集群(> 100TB)
├── 节点数:20+ 个
├── 副本因子:3
├── 数据中心:2+ 个
└── 一致性级别:EACH_QUORUM

系统优化配置

1. 操作系统优化

# /etc/sysctl.conf
vm.max_map_count = 1048576
vm.swappiness = 1
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 10
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728

# 应用配置
sudo sysctl -p

2. 文件句柄限制

# /etc/security/limits.conf
cassandra soft nofile 100000
cassandra hard nofile 100000
cassandra soft nproc 32768
cassandra hard nproc 32768
cassandra soft memlock unlimited
cassandra hard memlock unlimited

3. 磁盘优化

# 禁用 atime 更新
mount -o remount,noatime,nodiratime /data

# XFS 文件系统格式化
mkfs.xfs -f -d su=64k,sw=1 /dev/nvme0n1

# 挂载选项
mount -o noatime,nodiratime,nobarrier,logbufs=8 /dev/nvme0n1 /data/cassandra

JVM 调优配置

cassandra-env.sh 优化

# 堆内存设置(物理内存的 1/4 到 1/2)
MAX_HEAP_SIZE="32G"
HEAP_NEWSIZE="8G"

# GC 配置(Java 8)
JVM_OPTS="$JVM_OPTS -XX:+UseG1GC"
JVM_OPTS="$JVM_OPTS -XX:G1RSetUpdatingPauseTimePercent=5"
JVM_OPTS="$JVM_OPTS -XX:MaxGCPauseMillis=200"
JVM_OPTS="$JVM_OPTS -XX:InitiatingHeapOccupancyPercent=45"
JVM_OPTS="$JVM_OPTS -XX:+AlwaysPreTouch"
JVM_OPTS="$JVM_OPTS -XX:-UseBiasedLocking"
JVM_OPTS="$JVM_OPTS -XX:+UseTLAB"
JVM_OPTS="$JVM_OPTS -XX:+ResizeTLAB"

# 性能监控
JVM_OPTS="$JVM_OPTS -XX:+PrintGCDetails"
JVM_OPTS="$JVM_OPTS -XX:+PrintGCDateStamps"
JVM_OPTS="$JVM_OPTS -XX:+PrintHeapAtGC"
JVM_OPTS="$JVM_OPTS -XX:+PrintTenuringDistribution"
JVM_OPTS="$JVM_OPTS -Xloggc:/var/log/cassandra/gc.log"
JVM_OPTS="$JVM_OPTS -XX:+UseGCLogFileRotation"
JVM_OPTS="$JVM_OPTS -XX:NumberOfGCLogFiles=10"
JVM_OPTS="$JVM_OPTS -XX:GCLogFileSize=10M"

生产环境 cassandra.yaml 配置

# 集群配置
cluster_name: 'Production Cluster'
num_tokens: 256
allocate_tokens_for_local_replication_factor: 3

# 网络配置
listen_address: 10.0.1.10  # 节点内部通信 IP
rpc_address: 0.0.0.0
broadcast_address: 10.0.1.10
broadcast_rpc_address: 10.0.1.10

# 性能调优
concurrent_reads: 64
concurrent_writes: 64
concurrent_counter_writes: 32
concurrent_materialized_view_writes: 32

# 内存配置
memtable_heap_space_in_mb: 2048
memtable_offheap_space_in_mb: 2048
memtable_cleanup_threshold: 0.11

# 缓存配置
key_cache_size_in_mb: 1000
key_cache_save_period: 14400
row_cache_size_in_mb: 0  # 通常禁用
counter_cache_size_in_mb: 50

# 压缩配置
commitlog_compression:
  - class_name: LZ4Compressor

# 安全配置
authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer
role_manager: CassandraRoleManager

# 备份配置
incremental_backups: true
snapshot_before_compaction: false

# 压缩策略
compaction_throughput_mb_per_sec: 64
compaction_large_partition_warning_threshold_mb: 100

# 流控制
stream_throughput_outbound_megabits_per_sec: 200
inter_dc_stream_throughput_outbound_megabits_per_sec: 50

多数据中心部署

1. 网络拓扑配置

# cassandra-topology.properties
# 数据中心 DC1
10.0.1.10=DC1:RAC1
10.0.1.11=DC1:RAC1
10.0.1.12=DC1:RAC2
10.0.1.13=DC1:RAC2

# 数据中心 DC2
10.0.2.10=DC2:RAC1
10.0.2.11=DC2:RAC1
10.0.2.12=DC2:RAC2
10.0.2.13=DC2:RAC2

# 默认配置
default=DC1:RAC1

2. 跨数据中心复制策略

CREATE KEYSPACE multi_dc_keyspace
WITH REPLICATION = {
  'class': 'NetworkTopologyStrategy',
  'DC1': 3,
  'DC2': 3
}
AND durable_writes = true;

监控与告警配置

1. JMX 监控配置

# cassandra-env.sh
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=7199"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=7199"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"

2. Prometheus 集成

# prometheus.yml
scrape_configs:
  - job_name: 'cassandra'
    static_configs:
      - targets: ['10.0.1.10:7070', '10.0.1.11:7070', '10.0.1.12:7070']
    relabel_configs:
      - source_labels: [__address__]
        regex: '([^:]+):.*'
        target_label: instance
        replacement: '${1}'

3. 关键监控指标

# 必须监控的指标
监控指标:
  系统级:
    - CPU 使用率 < 80%
    - 内存使用率 < 85%
    - 磁盘使用率 < 80%
    - 磁盘 I/O 延迟 < 10ms
  
  Cassandra 级:
    - 读延迟 P99 < 100ms
    - 写延迟 P99 < 10ms
    - Pending compactions < 10
    - Dropped messages = 0
    - GC 暂停时间 < 200ms
    - Heap 使用率 < 75%

备份与恢复策略

1. 自动化备份脚本

#!/bin/bash
# cassandra-backup.sh

BACKUP_DIR="/backup/cassandra/$(date +%Y%m%d_%H%M%S)"
KEYSPACES="keyspace1 keyspace2 keyspace3"
RETENTION_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行快照
for keyspace in $KEYSPACES; do
    echo "Backing up keyspace: $keyspace"
    nodetool snapshot -t backup_$(date +%Y%m%d_%H%M%S) $keyspace
done

# 复制快照文件
for keyspace in $KEYSPACES; do
    find /var/lib/cassandra/data/$keyspace -name "backup_*" -type d | while read snap_dir; do
        table=$(echo $snap_dir | cut -d'/' -f6)
        mkdir -p $BACKUP_DIR/$keyspace/$table
        cp -r $snap_dir/* $BACKUP_DIR/$keyspace/$table/
    done
done

# 清理旧快照
nodetool clearsnapshot

# 删除过期备份
find /backup/cassandra -type d -mtime +$RETENTION_DAYS -exec rm -rf {} \;

# 上传到对象存储(可选)
# aws s3 sync $BACKUP_DIR s3://cassandra-backups/$(hostname)/

2. 恢复流程

# 1. 停止 Cassandra
systemctl stop cassandra

# 2. 清理数据目录
rm -rf /var/lib/cassandra/data/keyspace_name/*

# 3. 恢复数据
cp -r /backup/cassandra/20250114_120000/keyspace_name/* /var/lib/cassandra/data/keyspace_name/

# 4. 修改权限
chown -R cassandra:cassandra /var/lib/cassandra/data/

# 5. 启动 Cassandra
systemctl start cassandra

# 6. 运行 repair
nodetool repair -pr keyspace_name

安全加固

1. 认证配置

-- 创建管理员用户
CREATE ROLE admin WITH PASSWORD = 'strong_password' 
  AND SUPERUSER = true 
  AND LOGIN = true;

-- 创建应用用户
CREATE ROLE app_user WITH PASSWORD = 'app_password' 
  AND LOGIN = true;

-- 授权
GRANT SELECT ON keyspace.table TO app_user;
GRANT MODIFY ON keyspace.table TO app_user;

-- 删除默认用户
DROP ROLE cassandra;

2. 网络加密配置

# cassandra.yaml
server_encryption_options:
  internode_encryption: all
  keystore: /etc/cassandra/keystore.jks
  keystore_password: keystore_password
  truststore: /etc/cassandra/truststore.jks
  truststore_password: truststore_password
  protocol: TLS
  algorithm: SunX509
  cipher_suites: [TLS_RSA_WITH_AES_256_CBC_SHA256]

client_encryption_options:
  enabled: true
  optional: false
  keystore: /etc/cassandra/keystore.jks
  keystore_password: keystore_password

故障处理手册

1. 节点宕机恢复

# 检查节点状态
nodetool status

# 如果节点 DOWN,尝试重启
systemctl restart cassandra

# 检查日志
tail -f /var/log/cassandra/system.log

# 运行修复
nodetool repair -pr

2. 数据一致性修复

# 全量修复(影响性能)
nodetool repair

# 增量修复(推荐)
nodetool repair -inc

# 主键范围修复
nodetool repair -pr

# 特定表修复
nodetool repair keyspace table

3. 性能问题排查

# 查看慢查询(需先启用追踪)
nodetool settraceprobability 0.1  # 追踪10%的查询
nodetool toppartitions keyspace table 1000

# 查看大分区
nodetool tablehistograms keyspace table

# 查看等待的压缩
nodetool compactionpending

# 强制压缩
nodetool compact keyspace table

容量规划

存储容量计算

实际数据大小 = 原始数据 × 副本因子 × (1 - 压缩率)
推荐预留空间 = 实际数据大小 × 2.5

示例:
- 原始数据:1TB
- 副本因子:3
- 压缩率:50%
- 实际占用:1TB × 3 × (1 - 0.5) = 1.5TB
- 推荐容量:1.5TB × 2.5 = 3.75TB

节点扩容流程

# 1. 准备新节点
# 安装相同版本的 Cassandra
# 配置相同的 cluster_name
# 配置正确的种子节点

# 2. 启动新节点
systemctl start cassandra

# 3. 监控数据迁移
nodetool netstats

# 4. 完成后运行清理
nodetool cleanup  # 在所有旧节点上运行

监控与维护

集群状态检查

# 检查节点状态
docker exec -it cassandra nodetool status

# 检查集群信息
docker exec -it cassandra nodetool info

# 检查性能指标
docker exec -it cassandra nodetool tpstats

数据备份

# 创建快照
docker exec -it cassandra nodetool snapshot test_keyspace

# 列出快照
docker exec -it cassandra nodetool listsnapshots

# 清理快照
docker exec -it cassandra nodetool clearsnapshot

日志监控

# 查看 Cassandra 日志
docker logs cassandra

# 实时监控日志
docker logs -f cassandra

常见问题

问题1:容器启动失败

现象: 容器无法正常启动 原因: 内存不足或端口冲突 解决方案:

# 检查内存使用情况
free -h

# 检查端口占用
netstat -tlnp | grep 9042

# 增加内存限制
docker run -m 4g --name cassandra cassandra:latest

问题2:连接超时

现象: CQL 连接超时 原因: 网络配置或防火墙问题 解决方案:

# 检查网络连接
telnet localhost 9042

# 检查防火墙设置
sudo ufw status

问题3:数据写入失败

现象: 写入操作返回错误 原因: 一致性级别设置过高 解决方案:

-- 降低一致性级别
CONSISTENCY QUORUM;
-- 或者
CONSISTENCY ONE;

⚠️ 注意: 降低一致性级别会影响数据一致性保证,请根据业务需求谨慎选择。

相关文章

Cassandra 专题

数据库对比

大数据技术栈

容器化部署

监控运维

开发集成

  • [Java 数据库编程](../../开发/编程语言/Java/JAVA EE/) - JDBC/ORM