我在一个项目中正在生产中运行一个cassandra实例,在该项目中,我已经连接了成千上万个传感器,以使用c#cassandradriver将数据转储到cassandra服务器。
服务器具有2 TB SSD。
截至目前,我还没有遇到任何性能问题,但是我计划增加更多的传感器, 我只有一个KeySpace,并且在那个KeySpace中只有一个表。表的结构如下
CREATE TABLE xxxxkeyspace.sensorreadings (
signalid int,
monthyear int,
fromtime bigint,
totime bigint,
avg decimal,
insertdate bigint,
max decimal,
min decimal,
readings text,
PRIMARY KEY (( signalid, monthyear ), fromtime, totime)
) WITH bloom_filter_fp_chance = 0.01
AND comment = ''
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE'
AND caching = {
'keys' : 'ALL',
'rows_per_partition' : 'NONE'
}
AND compression = {
'chunk_length_in_kb' : 64,
'class' : 'LZ4Compressor',
'crc_check_chance' : 1.0,
'enabled' : true
}
AND compaction = {
'bucket_high' : 1.5,
'bucket_low' : 0.5,
'class' : 'SizeTieredCompactionStrategy',
'enabled' : true,
'max_threshold' : 32,
'min_sstable_size' : 50,
'min_threshold' : 4,
'tombstone_compaction_interval' : 86400,
'tombstone_threshold' : 0.2,
'unchecked_tombstone_compaction' : false
};
当我运行nodetool状态时,它说密钥空间已占用SSD上超过550GB的数据。
如果在运行时将更多节点添加到群集,则生产期间会出现任何问题。请注意,我不能容忍一个小时以上的停机时间。
答案 0 :(得分:2)
您可以在没有任何停机的情况下添加新节点,一旦在现有环中添加了新节点,就开始了范围移动,并且在新节点引导过程中完成了与所获取令牌对应的所有数据的复制。新节点的引导过程完成后,所有负责的写入请求将根据其令牌转发到此节点。
现在剩下的事情就是清除旧节点中已移到新节点的令牌中的数据,以后可以随时使用nodetool cleanup命令来完成。