自建开源 Cassandra 与 GaussDB(for Cassandra) 性能对比测试报告
1 概述
本文为自建开源 Cassandra 与 GaussDB(for Cassandra)性能对比测试报告,完整描述了整个测试的环境、测试模型和详细的测试步骤,作为性能的参考。
2 环境描述
2.1 开源 Cassandra 测试环境
2.2 GaussDB(for Cassandra)测试环境
2.3 压测工具环境
2.3.1)压测机器规格
2.3.2)压测工具信息
3 测试模型
4 测试步骤
4.1 开源 Cassandra 测试详细步骤
4.1.1)购买机器
步骤一:登录弹性云服务器页面,点击右侧的购买弹性云服务器按钮,并按照相关提示,完成 ecs 服务器购买,其中一些关键参数的取值
区域:华东-上海二;
可用区:可用区 3,
规格:通用增强型|c6.xlarge.4,
镜像:公共镜像-CentOS-CentOS 7.6 64bit(40GB);
数据盘:选择超高 IO,大小为 200G;
网络:选择任意 vpc 和子网;
其他参数:根据提示设置即可,非必选参数可不填。
步骤二:等待 ecs 服务器创建完成之后,我们登录 ecs 服务器,可以用控制台的远程登录或者通过 xshell 工具用弹性 ip 连接;
步骤三:登录五台 ecs 云服务器,安装 jre,执行 yum install jre,按照提示,完成安装。
步骤四:我们把五台 ecs 分别命名为 Cassandra-1(192.168.0.15),Cassandra-2(192.168.0.240),Cassandra-3(192.168.0.153),Cassandra-4(192.168.0.175),ycsb-Cassandra(192.168.0.60),其中,Cassandra-1,Cassandra-2,Cassandra-3,为我们的初始化 Cassandra 集群,Cassandra-4 为我们后面扩容用的扩展服务器,ycsb-Cassandra 作为压测服务器;
步骤五:登录五台 ecs 云服务器,安装 Cassandra 服务,并创建数据目录,按顺序执行下列命令:
下载 Cassandra 安装包,执行命令:wget http://mirror-hk.koddos.net/apache/Cassandra/3.11.5/apache-Cassandra-3.11.5-bin.tar.gz ;
解压安装包,tar -zxvf apache-Cassandra-3.11.5-bin.tar.gz -C /root/
更改安装目录:mv /root/apache-Cassandra-3.11.5 /usr/local/Cassandra
配置环境变量:echo “export PATH=/usr/local/Cassandra/bin:$PATH” >> /etc/profile
使环境变量生效:source /etc/profile
创建数据目录:mkdir /data
执行如下命令,回显如下,则表示安装成功:cqlsh
4.1.2)开源 Cassandra 集群配置操作手册
步骤一:配置 Cassandra 集群,并启动;登录 Cassandra-1(192.168.0.15),Cassandra-2(192.168.0.240),Cassandra-3(192.168.0.153),进入/usr/local/Cassandra/conf 目录,
修改 Cassandra-topology.properties 文件,三个节点,这个配置文件,保持一致即可。修改内容如下,注释掉方框中内容,增加圆圈中的内容:
修改 Cassandra.yaml 文件,涉及以下几个参数:
修改完以上两个配置之后,我们现在可以启动 Cassandra 集群了,分别在三个节点执行:Cassandra –R &
集群的配置和启动,到此就结束了。
4.1.3)开源 Cassandra 集群扩容节点
步骤一:登录 Cassandra-4 节点,进入/usr/local/cassnadra/conf 目录,编辑 Cassandra-topology.properties 文件,注释方框内容,添加圆圈中内容
修改 Cassandra.yaml 文件,关键参数如下:
登录 Cassandra-1 节点,停止所有节点的压缩,执行命令: nodetool disableautocompaction
登录 Cassandra-1 节点,停止正在执行的压缩,执行命令: nodetool stop COMPACTION
登录 Cassandra-1 节点,限制节点的迁移流量(这里我们设置为 32MB/S,避免对业务造成太大的影响),执行命令: nodetool setstreamthroughput 32
登录 Cassandra-4 节点,启动 Cassandra 服务,执行: Cassandra –R &
步骤二:登录 Cassandra-1,扩容过程中(这里请记录开始扩容的时间点 t1),每 30s 执行一次 nodetool status,当 Cassandra-4 节点的状态为 UJ 时,说明还在数据迁移,直到状态为 UN 时,迁移才算完成。迁移中如下图:
4.2 GaussDB(for Cassandra)测试步骤
4.2.1)购买 Cassandra 集群
步骤一:创建 Cassandra 实例,选择上海二区域,云数据库 GaussDB(for Cassandra)服务,点击购买数据库实例,按照提示完成 Cassandra 实例购买,其中一些参数选择如下;
性能规格:4 核|16GB
存储空间:200G
节点数量:3
虚拟私有云,内网安全组:和创建的弹性云服务器保持一致
步骤二:等待 Cassandra 实例创建完成,进行性能测试;
4.2.2)GaussDB(for Cassandra)集群扩容节点
步骤一:登录 GaussDB(for Cassandra)控制台,点开实例详情页面,点击途中的”+”按钮,跳转到添加节点页面,选择添加 1 个节点,点击提交;
步骤二:等待扩容完成,操作完成,观察在扩容过程中 QPS 的浮动情况,可以看到在 GaussDB(for Cassandra)场景下,对实例进行节点扩容,仅有十秒左右的 qps 小幅下降,对业务几乎无影响,扩容操作从下发到扩容完成,大约十分钟左右。在扩容操作完成之后,也可以跳回步骤八九,对测试过程数据进行分析。下面仅提供
4.3 ycsb 测试详细步骤
登录 ycsb-Cassandra,下载 ycsb 工具并安装,
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz
使用终端工具如 xshell 通过客户端 ECS 实例弹性公网 IP 连接。
ycsb 具体使用方法: https://github.com/brianfrankcooper/YCSB/tree/master/Cassandra
5 测试结果
5.1 性能结果
5.2 测试结论
1. GaussDB(for Cassandra)扩容较快,影响业务的时间较为短暂,为 10s,且不涉及参数调整,扩容过程十分钟。
2. 社区版根据数据量的大小,参数的设置,整个扩容流程比较长,对性能的影响也参差不齐,50G 预置数据,在实验场景中,扩容会超过 30 分钟。
3. 计算公式:最快迁移速度=(nodetool setstreamthroughput 32 设置的迁移流量限制,默认为 200Mbps)*原节点数。
4. 本测试过程中,最快的迁移速度=32Mbps/s*3=12MB/S=720MB/min=0.703GB/min,计算可得 50GB 数据在此场景下迁移的最快时间是:50/0.703=71.1 分钟。
各性能模型下,只要有读操作,同规格的 GaussDB(for Cassandra)集群性能远高于社区版集群。
社区版 Cassandra 对读非常不友好,GaussDB(for Cassandra)在读时延的性能表现上,要优于社区版数十倍。
在写性能表现上,GaussDB(for Cassandra)与社区版基本保持一致。
社区版和 GaussDB(for Cassandra)在节点扩容过程中,对业务都有轻度的影响。
版权声明: 本文为 InfoQ 作者【华为云数据库小助手】的原创文章。
原文链接:【http://xie.infoq.cn/article/f68beb24602a31e761561315f】。文章转载请联系作者。
评论