浅析Cassandra扩容

简介: 前言 Cassandra是一款非常优秀的分布式数据库,可以灵活的在线扩容,满足业务水平扩展的需求。本文将会详细阐述扩容中可能遇到的问题,帮助Cassandra用户更好的管理Cassandra。 扩容原理 Cassandra采用一致性Hash算法对数据进行分区打散。

前言

Cassandra是一款非常优秀的分布式数据库,可以灵活的在线扩容,满足业务水平扩展的需求。本文将会详细阐述扩容中可能遇到的问题,帮助Cassandra用户更好的管理Cassandra。

扩容原理

Cassandra采用一致性Hash算法对数据进行分区打散。

image

上图不同颜色代表不同节点,每个节点会有虚拟节点在环上(图示每个节点有3个),具体有多少个虚拟节点,取决于这个配置:

num_tokens: 256

这个值不能调得太低,不然虚拟节点不够容易出现数据倾斜。

Cassandra称这些虚拟节点为Token,Token就是一个长整型数。2个Token之间构成一个左开右闭的区间(Range),落在这个区间内的数据都归右边界的Token所对应的节点管理(数据会用同样的Hash算法得到一个长整型值映射到环上)。比如:(100,200],200这个Token属于NodeA,那么(100,200]上的数据都归NodeA管理。

数据迁移

很明显扩容后加入了新的Token,会产生新的Range,这些Range中的一部分会归新节点管理。那么就需要把数据从旧节点迁移到新节点上去。

新节点会从旧节点上去拖数据过来,这时候节点状态会处于JOINING。可以通过nodetool netstats查看到节点状态以及当前迁移进度。
大概输出类似下面这样:

Mode: JOINING
Bootstrap fcbdf860-5bb4-11e9-85c8-000000000002
    /xx.xx.xx.xx
        Receiving 2 files, 100 bytes total. Already received 1 files, 50 bytes total
            filename 10/50 bytes(20%) received from idx:0/xx.xx.xx.xx

具体大家可以实际操作时候,跑一下nodetool netstats查看。

迁移开始标志可以通过搜索日志中这么一行内容:

Starting to bootstrap...

整个迁移过程完成后,节点会进入NORMAL状态,同样可以通过上述命令查看。整个数据传输过程,是通过Cassandra点对点之间的Streaming传输协议进行数据流传输。这里主要有2个参数控制传输速度,大家可以根据实际硬件&业务情况配置,在速度与稳定性之间权衡,避免影响在线服务。

# 控制该节点整体数据流出速度 200Mbps
stream_throughput_outbound_megabits_per_sec: 200

# 控制该节点夸数据中心间的数据流出速度(即数据同步到另一个数据中心的节点上时)。这个配置超过上面那个没有作用,因为上面是整体控制,也就是上界。
inter_dc_stream_throughput_outbound_megabits_per_sec: 200 

扩容操作建议

扩容过程需要一台一台操作,并通过nodetool netstats确认进入NORMAL状态后,再操作下一台,不然你可以会遇到下面这个异常,导致启动失败。

Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true.

写在最后

为了营造一个开放的Cassandra技术交流环境,社区建立了微信公众号和钉钉群。为广大用户提供专业的技术分享及问答,定期开展专家技术直播,欢迎大家加入。另云Cassandra免费火爆公测中,欢迎试用:https://www.aliyun.com/product/cds
image

相关文章
|
Cloud Native 关系型数据库 分布式数据库
PolarDB的发展史
PolarDB的发展史
|
存储 分布式计算 负载均衡
大数据集群节点多块磁盘负载不均衡怎么办?
大数据集群节点多块磁盘负载不均衡怎么办?
|
NoSQL 前端开发
cassandra nodetool常用命令介绍
简介 nodetool是cassandra自带的外围工具,通过JMX可以动态修改当前进程内存数据,注意cassandra是无主对等架构,默认的命令是操作本机当前进程,例如repair,如果需要做全集群修复,需要在每台机器上执行对应的nodetool命令。
4452 0
|
5月前
|
JSON 安全 JavaScript
深入浅出解析 HTTPS 原理
HTTPS是HTTP与SSL/TLS结合的安全协议,通过数字证书验证身份,利用非对称加密安全交换会话密钥,再以对称加密高效传输数据,确保通信的机密性、完整性和真实性。整个过程如同建立一条加密隧道,保障网络交互安全。
2518 16
|
安全 数据建模 物联网
关于IP SSL证书的9大常见问题解答
IP SSL证书用于实现IP地址的HTTPS加密,确保数据传输安全。它分为DV型和OV型企业型,支持单个或多个IP地址保护。常见问题包括:什么是IP SSL证书、其作用与类型、签发机构、内网申请可行性、应用场景、价格范围、申请条件与流程等。锐安信sslTrus和CFCA等品牌支持内网IP加密,价格从几百到几千元不等。申请需确认型号、生成CSR文件并提交验证。
|
缓存 运维 监控
Cassandra 性能压测及调优实战
掌握Cassandra分布式数据库性能压测及性能调优 作者:孤池
4668 1
Cassandra 性能压测及调优实战
|
监控 数据可视化 安全
探究架构之 - 45张图玩转Kong Gateway,建议收藏系列 (一)
探究架构之 - 45张图玩转Kong Gateway,建议收藏系列 (一)
1679 1
探究架构之 - 45张图玩转Kong Gateway,建议收藏系列 (一)
|
存储 缓存 负载均衡
图解一致性哈希算法,看这一篇就够了!
近段时间一直在总结分布式系统架构常见的算法。前面我们介绍过布隆过滤器算法。接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。
29548 66
图解一致性哈希算法,看这一篇就够了!
|
存储 监控 Linux
【亮剑】在Linux系统中,有一个特殊的目录经常被用户和管理员所忽视——/tmp。
【4月更文挑战第30天】`/tmp`目录在Linux系统中扮演着重要角色,用于存储临时文件,涉及程序运行、系统操作、用户文件及网络通信。它在系统维护、软件开发、数据处理和网络操作等场景中广泛应用。为保障系统稳定和数据安全,需进行权限控制、定期清理、设置磁盘配额、安全审计以及用户教育。理解和管理`/tmp`目录对于优化系统性能和防范风险至关重要。
1003 1
|
NoSQL 负载均衡
【Cassandra】Cassandra集群管理节点
The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data.
1235 0